我有两个数据帧:
df1 <- data.frame(id = c("LABEL1", "LABEL2", "LABEL3", "LABEL4", "LABEL5", "LABEL6"),matrix(1:60,6,10))
df1[c(4:6), c(2:4)] = NA
df2 = data.frame(id = c( "LABEL3", "LABEL4", "LABEL5", "LABEL6"),matrix(seq(100,10000, length.out = 32),4,8))
我想使用键值= 'id'来查找DF2中DF1的缺失值 . 这是所需的输出:enter image description here
这是我尝试的方法:1 . 合并:但我得到X1:X3的重复列 . 匹配:
df1[,2]= df2[,2][match(df1$id, df2$id)]
但我会在DF1中获得标签3 . 3.从qdap包查找:
library(qdap)
apply(df1, 2, lookup, df2)
与方法2相同的结果 .
谢谢!
2 回答
您可以使用
tidyr
以整洁的数据形式工作,然后使用dplyr
来组合表格In one way with pipe
Step by step for explanation
可能有人有比我更好的方法,但这应该有效 . 这确实假设列的顺序是相同的,所以要小心 .
基本上,我所做的就是找到匹配的行和
df1
中出现NA的索引 . 使用匹配的行向量替换那些NA索引的行索引,并将df1
中的这些值替换为df2
中的相应值 .