如何找到不同数据框中的共同变量?

Mar*_*ayo 7 r dataframe

我有几个具有相似(但不相同)系列变量(列)的数据框。我想找到一种方法让 R 告诉我不同​​数据帧中的公共变量是什么。

例子:

`a <- c(1, 2, 3)
b <- c(4, 5, 6)
c <- c(7, 8, 9)
df1 <- data.frame(a, b, c)
b <- c(1, 3, 5)
c <- c(2, 4, 6)
df2 <- data.frame(b, c)`
Run Code Online (Sandbox Code Playgroud)

对于df1df2,我希望 R 有某种方式告诉我公共变量是bc

G. *_*eck 7

1)对于2个数据帧:

intersect(names(df1), names(df2))
## [1] "b" "c"
Run Code Online (Sandbox Code Playgroud)

要获取 df1 中但不在 df2 中的名称:

setdiff(names(df1), names(df2))
Run Code Online (Sandbox Code Playgroud)

1a)对于任意数量的数据帧(即获取所有数据帧的通用名称):

L <- list(df1, df2)
Reduce(intersect, lapply(L, names))
## [1] "b" "c"
Run Code Online (Sandbox Code Playgroud)

2)另一种方法是使用duplicated,因为如果我们连接两个数据帧的名称,通用名称将是重复的。

nms <- c(names(df1), names(df2))
nms[duplicated(nms)]
## [1] "b" "c"
Run Code Online (Sandbox Code Playgroud)

2a)将其推广到 n 个数据帧,使用table并查找与数据帧出现次数相同的名称:

L <- list(df1, df2)
tab <- table(unlist(lapply(L, names)))
names(tab[tab == length(L)])
## [1] "b" "c"
Run Code Online (Sandbox Code Playgroud)