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
我想 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