根据R拟合标准制作新的数据框

时间:2018-10-12 06:42:55

标签: r dataframe

因此,我有六个大型数据集,每个数据集都有大约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

谢谢

1 个答案:

答案 0 :(得分:0)

要获取数据框的列名,请先使用namescolnames,如

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实现相同的结果。无论如何,以上内容应使您了解如何实现所需的结果。