在R中,按列名而不是列号对列进行分组

时间:2019-12-26 18:29:13

标签: r dataframe names

在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"]

有什么想法吗?

2 个答案:

答案 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