输入(df)
> df
gender age LIST_12 LIST_24 LIST_42 anxious happy nervous
1 11 12 20 18 29 31 6 28
2 35 25 26 23 9 34 13 21
3 20 8 28 27 26 26 34 29
4 24 35 10 11 18 25 26 3
5 34 8 4 3 29 33 25 35
所需的输出(dfSubset)
在LIST_结束后获取仅包含列的子集的最佳方法是什么。在这种情况下,我只想分配:焦虑,快乐和紧张的专栏。
anxious happy nervous
1 31 6 28
2 34 13 21
3 26 34 29
4 25 26 3
5 33 25 35
的相关信息
我知道我可以运行以下代码,以便仅对以LIST_开头的列名进行子集化。但这不是我要找的......
dfSubset = subset(x = df, select = grep("LIST_", names(df)))
dfSubset
可重复的来源
df <- structure(list(gender = c(11L, 35L, 20L, 24L, 34L), age = c(12L,
25L, 8L, 35L, 8L), LIST_12 = c(20L, 26L, 28L, 10L, 4L), LIST_24 = c(18L,
23L, 27L, 11L, 3L), LIST_42 = c(29L, 9L, 26L, 18L, 29L), anxious = c(31L,
34L, 26L, 25L, 33L), happy = c(6L, 13L, 34L, 26L, 25L), nervous = c(28L,
21L, 29L, 3L, 35L)), .Names = c("gender", "age", "LIST_12", "LIST_24",
"LIST_42", "anxious", "happy", "nervous"), class = "data.frame", row.names = c(NA,
-5L))
答案 0 :(得分:2)
您可以找到哪一列是以LIST
开头的最后一列,添加1,并使用该数字开始列数到列。
df[(max(grep("^LIST", names(df))) + 1):ncol(df)]
# anxious happy nervous
# 1 31 6 28
# 2 34 13 21
# 3 26 34 29
# 4 25 26 3
# 5 33 25 35
答案 1 :(得分:1)
我们可以使用select
dplyr
library(dplyr)
df %>%
select(-matches("LIST|gender|age"))
# anxious happy nervous
#1 31 6 28
#2 34 13 21
#3 26 34 29
#4 25 26 3
#5 33 25 35
或者可能是
df %>%
select((tail(matches("LIST"),1)+1):ncol(.))