【问题标题】:Randomly select groups (and all cases per group) in R?在 R 中随机选择组(以及每组的所有案例)?
【发布时间】:2012-11-04 08:36:06
【问题描述】:

我有一个包含两个数据级别的 R 数据框:idyear。在id 定义的组内,年数增加(整个数据集每组的年数相同,如下所示:

id    year    var1    var2
11A   2001    ...     ...
11A   2002    ...     ...
11A   2003    ...     ...
11A   2004    ...     ...
13B   2001    ...     ...
13B   2002    ...     ...
13B   2003    ...     ...
13B   2004    ...     ...
22Z   2001    ...     ...

我的数据中有大约 20.000 个组,当然太多了,无法绘制出漂亮的增长曲线图。如何随机选择大约 20 个我的 id? (所以:还要选择与该 id 对应的所有 4 行年份?)

【问题讨论】:

    标签: r sample


    【解决方案1】:

    如果您使用sample 然后索引,这非常简单。这是一个虚构的示例,看起来与您提供的内容相似。它实际上只有两行代码,如果您愿意,可以在一行中完成。

    dat <- data.frame(id=paste0(LETTERS[1:8], rep(1:1250, 8)), 
       year=as.factor(as.character(sample(c(1990:2012, 20000, T)))), 
       var1=rnorm(20000), var2=rnorm(20000))
    
    #a look at the data
    head(dat)
    
    #sample 20 id's randomly
    (ids <- sample(unique(dat$id), 20))
    
    #narrow your data set
    dat2 <- dat[dat$id %in% ids, ]
    

    【讨论】:

      【解决方案2】:
      subset(df, id %in% sample(levels(df$id), 20))
      

      假设您的数据框名为df,并且您的id 是一个因素(如果不是,请使用unique 而不是levels

      【讨论】:

        猜你喜欢
        • 2014-04-23
        • 2013-04-09
        • 1970-01-01
        • 2014-06-28
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多