【发布时间】:2021-01-19 14:24:42
【问题描述】:
我有两个数据框,df1 和 df2。我想用df1 中的相应行替换df2 中的每个元素。见下文:
> df1
V1 V2 V3 V4 V5 V6
1 7 11 22 35 36 37
2 6 14 17 18 32 38
3 9 17 21 24 33 37
df2
V1 V2 V3
1 1 NA NA
2 2 NA NA
3 3 NA NA
4 1 2 NA
5 1 3 NA
6 2 3 NA
7 1 2 3
通过使用以下代码行,我可以非常接近所需的输出:df1[t(df2),],它会生成以下输出:
> df1[t(df2),]
V1 V2 V3 V4 V5 V6
1 7 11 22 35 36 37
NA NA NA NA NA NA NA
NA.1 NA NA NA NA NA NA
2 6 14 17 18 32 38
NA.2 NA NA NA NA NA NA
NA.3 NA NA NA NA NA NA
3 9 17 21 24 33 37
NA.4 NA NA NA NA NA NA
NA.5 NA NA NA NA NA NA
1.1 7 11 22 35 36 37
2.1 6 14 17 18 32 38
NA.6 NA NA NA NA NA NA
1.2 7 11 22 35 36 37
3.1 9 17 21 24 33 37
NA.7 NA NA NA NA NA NA
2.2 6 14 17 18 32 38
3.2 9 17 21 24 33 37
NA.8 NA NA NA NA NA NA
1.3 7 11 22 35 36 37
2.3 6 14 17 18 32 38
3.3 9 17 21 24 33 37
但是,我希望输出保留与 df2 (nrow = 7, ncol = 18) 相同数量的行,并如下所示:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18]
[1,] 7 11 37 35 36 37 NA NA NA NA NA NA NA NA NA NA NA NA
[2,] 6 14 32 32 32 38 NA NA NA NA NA NA NA NA NA NA NA NA
[3,] 9 17 21 24 33 37 NA NA NA NA NA NA NA NA NA NA NA NA
[4,] 7 11 37 35 36 37 6 14 32 32 32 38 NA NA NA NA NA NA
[5,] 7 11 37 35 36 37 9 17 21 24 33 37 NA NA NA NA NA NA
[6,] 6 14 32 32 32 38 9 17 21 24 33 37 NA NA NA NA NA NA
[7,] 7 11 37 35 36 37 6 14 32 32 32 38 9 17 21 24 33 37
【问题讨论】:
-
图片不是发布数据(或代码)的好方法。 Relevant xkcd。您可以以
dput格式发布示例数据吗?请使用您尝试过的代码和dput(df)的输出来编辑问题。或者,如果dput(head(df, 20))的输出太大。 (注意:df应同时替换为df1和df2) -
怎么样:
t(apply(df2, 1, function(x) t(df1[x,])))? -
您想要的输出中的
ncol = 18来自哪里?
标签: r dataframe data-manipulation