Select 个数据框中的个案

Select cases in a data frame

我想 select 数据框中的一系列案例,每 N 列。我将用一个可重现的例子来说明我的问题:

set.seed(100)
data <- data.frame(replicate(18,sample(0:100,18,rep=TRUE)))

根据数据,我想 select data[1:6, 1],然后 data[7:12, 7],然后 data[13:19, 13],等等。显然,我正在处理更大的数据集(> 10000 行和列),这就是为什么我更喜欢自动执行此操作的原因。
我曾尝试预先定义一个序列 (seq()),但不太清楚如何将其应用于此问题。
感谢您的帮助!

matrix 索引在这里可能很方便:

sel <- cbind(sequence(nrow(data)),rep(seq(1,ncol(data),6),each=6))
sel

#      row  col
#      [,1] [,2]
# [1,]    1    1
# ...
# [6,]    6    1
# [7,]    7    7
# ...
#[12,]   12    7
#[13,]   13   13
# ...

然后:

data[sel]
# [1] 31 26 55  5 47 48 97  3 92 73 20 84 37 30 55 37 85 62

就目前而言,不清楚您是一次想要一个子集还是一次想要所有子集。我将介绍这两种情况。

一次一个子集:

sub <- seq(1, 13, 6)

for (i in seq_along(sub)) {
    data.sub <- data[sub[i]:sub[i+1], sub[i]]

    # Do whatever you need to do with this subset
}

一次所有子集:

sub <- seq(1, 13, 6)

data.sub <- list()

for (i in seq_along(sub))
    data.sub[[i]] <- data[sub[i]:sub[i+1], sub[i]]

data.sub <- unlist(data.sub)

# Process this vector all at once