因此,我有六个大型数据集,每个数据集都有大约250个预测变量(每个变量的初始预测变量都相同)。运行一种算法,如果该算法不符合某些标准,则将其从数据集中删除。
例如,有一个名为X.50T的预测变量
X.50T可以从第一个数据集和第二个数据集中删除,但不能从其他数据集中删除。所有其他预测变量也是如此。
我想知道我的所有六个数据集中包含哪些预测变量。
如何在R中完成此操作?
本质上,每个数据集对应一个结果列($ d_ {i} $)
即,对于六个数据集,我有六个列,分别是$ d_ {1} $,$ d_ {2} $,$ d_ {3} $,$ d_ {4} $,$ d_ {5} $和$ d_ {6} $
我想创建一个新的数据框,其中包含上述六列和预测变量,但仅包含出现在所有六个数据集中的预测变量。
六个数据集中的每个都有1800-2000行。每个对应于行名。我也只想包括所有出现在该观察中的所有六行。例如,数据框的“ row.names”为1,2,3 .... 2000,中间缺少一些。如果我说所有六个数据集中的行名称都为“ 150”,则要包括在内,如果在一个数据集中都没有,则要排除。
例如,假设250个预测变量中,所有六个数据集中仅出现200个。观察次数大约为2000。因此,我希望将2000 x 206矩阵作为新数据框。但是我只想在所有六行中都包含那些行,所以它可能是一个较小的数据帧,例如1800 x 206
谢谢
答案 0 :(得分:0)
要获取数据框的列名,请先使用names
或colnames
,如
cols <- colnames(df)
要获取列名的交集,请使用intersect
。例如:
first <- c("Espresso", "Flat White", "Americano")
second <- c("Americano", "Espresso", "Tea")
intersect(first, second)
[1] "Espresso" "Americano"
要对多个列名向量很好地执行此操作,请尝试Reduce
third <- fourth <- fifth <- sixth <- first[-1]
third
[1] "Flat White" "Americano"
final_columns <- Reduce(intersect, list(first, second, third, fourth, fifth, sixth))
final_columns
[1] "Americano"
要手动“手动”添加几列,请使用c()
,如
final_columns <- c("Bulletproof Coffee", final_columns)
完成此操作后,只需对原始数据帧进行子集化:
newdf <- original_df[, final_columns]
对于行名也可以这样做,尽管还有其他方法,例如内部联接或merge
实现相同的结果。无论如何,以上内容应使您了解如何实现所需的结果。