使用增量变量名称从R数据框中子集数据

时间:2015-11-03 03:50:27

标签: r dplyr

我有一个R数据框df,列名为V1, V2, V3...V1000。我需要通过选择每个第20列来对df进行分组,即V1, V21, V41, V61到列的结尾。

我认为这可以使用dplyr的select(df, num_range("V", val))来完成,但是我很难理解如何通过1000列迭代val,步数为20。

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

seq功能与dplyr&#39 {s} selectnum_range一起使用,如下所示:

library(dplyr)

df <- as.data.frame(matrix(rnorm(3000), nrow = 3))
df %>% select(num_range("V", seq(1, 1000, by = 20)))

答案 1 :(得分:1)

你可以使用像这样的函数。这是你想要跳过20列的nskip = 20

FOO <- function(data, nSubsets, nskip)
{
 outList <- vector("list", length = nSubsets)
 totcol <- ncol(data)
 for (i in seq_len(nSubsets))
 {
   colsToGrab<- seq(i, totcol, nSkip)
   outList[[i]] <- data[,colsToGrab ] 
 }
return(outList)
}

答案 2 :(得分:1)

你可以尝试,

df[seq(1, ncol(df), 20)]