在一个数据帧上,如果重复值出现在另一个数据帧上,

时间:2019-03-24 00:38:29

标签: r dataframe tidyr stringr

我需要用其他表上存在的值写一列。这是一个最小的数据示例:

data1 <- data.frame(col1 = c("Jack", "Gina", "Helen", "John"))
data2 <- data.frame(col2 = c("Gina", "Ed", "John", "Sara"))

我需要以下输出所必需的代码:

   col1 col2
1  Jack   NA
2  Gina   Gina
3 Helen   NA
4  John   John

在其中填充了一个名为data1$col2的新列的情况下,复制了data1$col1形式的值,但前提是该值出现在data2上。

3 个答案:

答案 0 :(得分:3)

transform(data1, col2 = as.character(data2$col2[match(data1$col1, data2$col2)]))
#   col1 col2
#1  Jack <NA>
#2  Gina Gina
#3 Helen <NA>
#4  John John

答案 1 :(得分:3)

我们可以在col2中复制data2的列信息以创建一个名为col1的新列,然后使用col1作为在{之间进行连接的键{1}}和data1data2是最终输出。

data3

答案 2 :(得分:2)

带有data.table

的联接选项
library(data.table)
setDT(data1)[data2, col2 := col2, on = .(col1 = col2)]
data1
#   col1 col2
#1:  Jack <NA>
#2:  Gina Gina
#3: Helen <NA>
#4:  John John