有没有办法编写一个随机采样数据帧中连续行的单行命令?

时间:2018-05-07 06:22:54

标签: r

我正在尝试编写一个函数,它为 very 简单数据帧提供了三条连续的行。真正的数据帧非常长,但这里更简单:

structure(list(simple = structure(1:5, .Label = c("aa", "bb", 
"cc", "dd", "ee"), class = "factor")), .Names = "simple", row.names = c(NA, 
-5L), class = "data.frame")

现在,使用dplyr

myrandomrows <- sample_n(df, 3)

如何将行样本连续进行?

修改 我希望生成数据完整的连续行,如下所示:

 1     aa
 2     bb
 3     cc

1 个答案:

答案 0 :(得分:2)

只需sample一行,然后选择下一行以使其连续

sample(1:nrow(df), 1) + 0:2

所以,如果

sample(1:nrow(df), 1) #returns
#[1] 3

sample(1:nrow(df), 1) + 0:2 # would return
#[1] 3 4 5 

您可以使用这些索引对数据框进行子集化。

df[sample(1:nrow(df), 1) + 0:2, ]

当索引值超出行号时,请处理边缘情况。