如何解决来自不同数据框的行的rep 数据
我有两个数据帧df1和df2。 df1和df2都有1051行和30列。我想像下面那样表演
sapply(rep(df1[1,],df2[1,]),as.numeric)
sapply(rep(df1[2,df2[2,as.numeric)
sapply(rep(df1[3,df2[3,as.numeric)
因此,所得数据框的尺寸将为1051,30。
我正在尝试以下代码
fd<-data.frame()
for (i in 1:nrow(df1))
{
for (j in 1:nrow(df2))
{
dfn<- sapply(rep(dfdia[i,dfconc[j,as.numeric)
fd<-rbind(fd,dfn)
}
}
但这是不正确的,因为我对于i = 1的这段代码将采用所有j值,对于i = 2的所有代码再次采用所有j值。 那么我该如何解决这个问题呢?预先感谢。
敌人示例let
df1是
1 1 2
2 5 3
df2是
2 2 1
4 1 5
,预期结果为
1 1 1 1 2
2 2 2 2 5 3 3 3 3 3
解决方法
您可以在每一行拆分数据,并在rep
中使用Map
:
data <- Map(rep,asplit(df1,1),asplit(df2,1))
data
#[[1]]
#V1 V1 V2 V2 V3
# 1 1 1 1 2
#[[2]]
#V1 V1 V1 V1 V2 V3 V3 V3 V3 V3
# 2 2 2 2 5 3 3 3 3 3
数据
df1 <- structure(list(V1 = 1:2,V2 = c(1L,5L),V3 = 2:3),class = "data.frame",row.names = c(NA,-2L))
df2 <- structure(list(V1 = c(2L,4L),V2 = 2:1,V3 = c(1L,5L)),-2L))
,
我们可以使用rep
g1 <- rowSums(df2)
split(rep(t(df1),t(df2)),rep(seq_along(g1),g1))
#$`1`
#[1] 1 1 1 1 2
#$`2`
#[1] 2 2 2 2 5 3 3 3 3 3
数据
df1 <- structure(list(V1 = 1:2,-2L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。