在R中,有没有一种方法可以通过名称而不是列号来对data.frame进行分组?
set.seed(1)
df <- data.frame(replicate(5, sample(c(1:99), 7, rep = TRUE)))
names(df) <- c("alpha","bravo","charlie","delta","echo"); df
通常,我会将data.frame的一部分分组,例如:
df[,2:4]
通常在具有数百列的大型数据集中,查明列号更加困难。我想通过使用列名而不是列号对列进行分组。以下给出了错误消息,但指出了我要执行的操作。
df[,"bravo":"delta"]
有什么想法吗?
答案 0 :(得分:4)
通过dplyr
,我们可以使用select
中的列名称范围
library(dplyr)
df %>%
select(bravo:delta)
# bravo charlie delta
#1 82 74 37
#2 59 7 34
#3 51 73 89
#4 97 79 44
#5 85 85 79
#6 21 37 33
#7 54 89 84
答案 1 :(得分:4)
在基数R中,您可以使用which
根据名称返回列索引:
set.seed(1)
df <- data.frame(replicate(5, sample(c(1:99), 7, rep = TRUE)))
names(df) <- c("alpha","bravo","charlie","delta","echo")
df[, which(colnames(df) == "bravo"):which(colnames(df) == "delta")]
# bravo charlie delta
# 1 66 77 22
# 2 63 50 65
# 3 7 72 13
# 4 21 99 27
# 5 18 38 39
# 6 69 77 2
# 7 39 93 38