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

in R, group columns by column name instead of column number

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

有什么想法吗?

有了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

在 base R 中,您可以使用 which 到 return 基于名称的列索引:

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