在 R 中使用行号进行采样
Sampling with row number in R
假设我的数据集比下面的数据集大得多:
df = data.frame(x = c("ciao mondo", "hello world", "ciao world","hello mondo","bye mondo","ciao ciao mondo"))
我想随机抽样,不放回几行,所以我这样做了:
sample(df$x,size = 3, replace = F)
问题是我不再拥有采样行的原始行索引。我的数据集很大,所以使用 grepl()
之类的东西来检索原始行索引效率很低。
你知道怎么做吗?
非常感谢!
不是在列上采样,而是在行序列上执行 sample
,因此它将 return 行索引,稍后可用于对行进行子集化
i1 <- sample(seq_len(nrow(df)), size = 3, replace = FALSE)
您可以将行号放入列中,然后从该数据框中采样行。
df$row = 1:nrow(df)
df[sample(nrow(df), 3, replace = F),]
set.seed(0)
后的结果
x row
6 ciao ciao mondo 6
1 ciao mondo 1
4 hello mondo 4
假设我的数据集比下面的数据集大得多:
df = data.frame(x = c("ciao mondo", "hello world", "ciao world","hello mondo","bye mondo","ciao ciao mondo"))
我想随机抽样,不放回几行,所以我这样做了:
sample(df$x,size = 3, replace = F)
问题是我不再拥有采样行的原始行索引。我的数据集很大,所以使用 grepl()
之类的东西来检索原始行索引效率很低。
你知道怎么做吗?
非常感谢!
不是在列上采样,而是在行序列上执行 sample
,因此它将 return 行索引,稍后可用于对行进行子集化
i1 <- sample(seq_len(nrow(df)), size = 3, replace = FALSE)
您可以将行号放入列中,然后从该数据框中采样行。
df$row = 1:nrow(df)
df[sample(nrow(df), 3, replace = F),]
set.seed(0)
x row
6 ciao ciao mondo 6
1 ciao mondo 1
4 hello mondo 4