我有一个列名为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中有更好的方法吗?
答案 0 :(得分:2)
一般来说,基地R没有这样的选择算子。 subset()
函数确实允许这样的选择
sum(subset(x[i, ], select=WK40:WK60))
或立即获得所有行总和
rowSums(subset(x, select=WK40:WK60))
但你只能使用文字值(没有变量),因此就编码而言它非常有限。
您也可以使用dplyr
执行类似的操作
x %>% select(b1:b3) %>% rowSums()