如何循环遍历列名和条件子集数据?

时间:2017-03-28 07:24:58

标签: r

我在数据框中循环遍历列名,我需要在每次迭代时使用这些名称对数据进行子集化。我知道alias "docker-destroy"="echo 'test' && docker rm" 可以替换为DATA$column when looping through column names,但我如何使用此格式进行分组?

示例:

DATA[[column]]

2 个答案:

答案 0 :(得分:3)

使用列的名称为数据框的列编制索引可以由Dataframe[[columnname]]完成。所以你可以这样做:

my.mean <- function(a, b) mean(DATA[DATA[[b]]==1,a])
outer(names(labs), names(labs), FUN = Vectorize(my.mean))

你在对角线上得到1分。

答案 1 :(得分:1)

由于subsetselect参数,我们可以使用该参数传递asubset的输出始终为data.frame,因为它有drop=FALSE作为默认参数。但是,mean适用于vectormatrix。因此,请通过提取第一列data.frame

vector转换为[[1]]
for (a in names(labs)) {
   for (b in names(labs)){
    if (a != b) {     
      print( mean(subset(DATA, b == 1, select = a)[[1]]) )
   }
 }
}