【问题标题】:Sampling with row number in R在 R 中使用行号进行采样
【发布时间】:2021-10-22 00:39:06
【问题描述】:

假设我有一个比下面的数据集大得多的数据集:

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() 之类的东西来检索原始行索引效率很低。

你知道怎么做吗?

非常感谢!

【问题讨论】:

    标签: r dataframe sample


    【解决方案1】:

    您可以将行号设为一列,然后从该数据框中采样行。

    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
    

    【讨论】:

      【解决方案2】:

      不是对列进行采样,而是对行序列执行sample,因此它将返回行索引,该索引可以稍后用于对行进行子集化

      i1 <- sample(seq_len(nrow(df)), size = 3, replace = FALSE)
      

      【讨论】:

        猜你喜欢
        • 2020-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        相关资源
        最近更新 更多