检查另一个数据集中是否存在列名

时间:2017-12-28 04:44:23

标签: r dataframe

所以我有两个不同的数据集,我试图检查列名是否在另一个数据集中有一个重复的列名。例如:

V1    V2    V3
1     2      3

作为一个数据集和

V4    V6    V1   V2
NA    NA    NA   NA

我正试图让第二个数据集像这样

V4    V6    V1   V2
NA    NA    1   NA

只有原始数据集中的最小值才会复制,如果是这样的话。我尝试过使用这个功能:

if(ncol((Session1t[grep(temp1, names(Session1t))])) != 0)

但这不起作用。无论输入什么,它都返回相同的值。在输入if语句后,我然后只复制我想要的列,并且我已经弄明白了,我只是无法使if语句有效地工作。

2 个答案:

答案 0 :(得分:2)

我们可以使用ifelse%in%来匹配列名,并将NA替换为1.

# Create example data frame D1
D1 <- read.table(text = "V1    V2    V3
1     2      3",
                 header = TRUE)

# Create example data frame D2
D2 <- read.table(text = "V4    V6    V1   V2
NA    NA    NA   NA",
                 header = TRUE)

# Replace NA to 1 if column names match
D2[1, ] <- ifelse(names(D2) %in% names(D1), 1, NA)
D2
#   V4 V6 V1 V2
# 1 NA NA  1  1

答案 1 :(得分:1)

或另一个选项是intersect

nm1 <- intersect(names(df1), names(df2))
df2[nm1] <- df1[nm1]
相关问题