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