如何从与现有数据集不匹配的变量创建新的数据表



我不知道如何正确地使用这个词。基本上我有两个数据集。一个用于Total变量,另一个用于Common variables。我想从总变量与普通变量的差异中生成一个新的数据集。例如,如果Total具有列A、B、C、D、E、F、G、H,而Common具有列A,B、C和D,则我想要一个具有其余列E、F,G和H的新数据集。在这种情况下,drop函数会起作用吗?我有300多列,所以我不能简单地查看公共数据集中哪些不同或缺失。我需要一个某种循环来查看第1-300列,确定哪些不在我的Total数据集中,并用Common variables数据集中找不到的"缺失"列创建一个新的数据集。

您可以使用setdiff来获取属于一个数据集但不属于另一个数据集中的变量名集。

# Totatl Dataset w/300 variables: A, B, C, D, E, F, G, X8, X9, X10, ..., X300
Total <- data.frame(matrix(1:3000, ncol = 300, dimnames = list(NULL,  c(LETTERS[1:7], paste0("X", 8:300)))))
# Common Dataset w/6 variables: A, B, C, D, Foo, Bar
Common <- data.frame(matrix(1:60, ncol = 6, dimnames = list(NULL,  c(LETTERS[1:4], "Foo", "Bar"))))
# Dataset with remaining columns 
# which belongs to Total but not to Common
new1 <- Total[, setdiff(names(Total), names(Common))]
# Dataset with missing columns
# Which belongs to Common but not Total
new2 <- Common[, setdiff(names(Common), names(Total))]

最新更新