我有几个具有相似(但不相同)系列变量(列)的数据框。我想找到一种方法让 R 告诉我不同数据帧中的公共(public)变量是什么。
例子:
`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)`
与
df1
和 df2
,我希望 R 用某种方式告诉我公共(public)变量是 b
和 c
.
最佳答案
1) 对于 2 个数据帧:
intersect(names(df1), names(df2))
## [1] "b" "c"
要获取 df1 中但 df2 中没有的名称:
setdiff(names(df1), names(df2))
1a) 对于任意数量的数据框(即获取所有数据框的通用名称):
L <- list(df1, df2)
Reduce(intersect, lapply(L, names))
## [1] "b" "c"
2) 另一种方法是使用
duplicated
因为如果我们连接两个数据框的名称,通用名称将是重复的名称。nms <- c(names(df1), names(df2))
nms[duplicated(nms)]
## [1] "b" "c"
2a) 要将其推广到 n 个数据帧,请使用
table
并查找与数据帧出现相同次数的名称:L <- list(df1, df2)
tab <- table(unlist(lapply(L, names)))
names(tab[tab == length(L)])
## [1] "b" "c"
关于r - 如何在不同的数据框中找到共同的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52860105/