如果我有几个数据框,如何确定某个数据框唯一的列?
df1 <- data.frame(A=rnorm(5), B=rnorm(5), C=rnorm(5))
df2 <- data.frame(B=rnorm(5), C=rnorm(5), D=rnorm(5))
df3 <- data.frame(B=rnorm(5), C=rnorm(5), D=rnorm(5))
我想要实现的是诸如unique()函数之类的功能,该函数为我提供了数据框中相对于其他数据框的唯一列。
unique.columns(df1, c(df2, df3))
[1] "A"
但是
unique.columns(df2, c(df1, df3))
[1] NA
因为df2中没有唯一列。
答案 0 :(得分:2)
您可以结合使用Reduce
和setdiff
来轻松处理任意数量的比较数据集。第一个命名的数据集将与其余数据进行比较。
Reduce(setdiff, lapply(list(df1,df2,df3), names))
#[1] "A"
Reduce(setdiff, lapply(list(df2,df1,df3), names))
#character(0)
答案 1 :(得分:1)
我们可以使用setdiff
和union
unique.columns <- function(df1, df2, df3) {
setdiff(names(df1), union(names(df2), names(df3)))
}
unique.columns(df1, df2, df3)
#[1] "A"
unique.columns(df2, df1, df3)
#character(0)
如果您要将可变数量的数据帧传递给该函数,则可以更改该函数
unique.columns <- function(df1, ...) {
temp <- list(...)
setdiff(names(df1), unique(c(sapply(temp, names))))
}
unique.columns(df1, df3)
#[1] "A"
答案 2 :(得分:0)
您还可以在每个df的React Native
上使用!
和%in%
来使用“ not in”,以获取一个df与其他df相比唯一的列名。
colnames