如何按R中的列名称对数据进行子集化?

时间:2015-07-17 15:22:57

标签: r subset

我有一个列名为c("WK1","WK2","WK3",...,"WK100")的数据框x,我希望每次观察的周数为40到60周。

现在在R中我使用grep函数找到WK40和WK60的位置并进行求和:

sum(x[i,(grep(WK40,colnames(x)):grep(WK60,colnames(x))])

这很好,但我知道在SAS中你可以使用sum(WK40-WK60)。在R中有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

一般来说,基地R没有这样的选择算子。 subset()函数确实允许这样的选择

sum(subset(x[i, ], select=WK40:WK60))

或立即获得所有行总和

rowSums(subset(x, select=WK40:WK60))

但你只能使用文字值(没有变量),因此就编码而言它非常有限。

您也可以使用dplyr执行类似的操作

x %>% select(b1:b3) %>% rowSums()