首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机采样dataframe变量的子集

随机采样dataframe变量的子集
EN

Stack Overflow用户
提问于 2011-12-07 19:21:08
回答 1查看 610关注 0票数 5

我正在处理一个大型数据集,其中包含每周的出行行为数据。在一周的过程中,人们已经完成了一周内进行的个人旅行的日志。个人由唯一的标识号(ID)标识。我想做的是从每个唯一ID可用的每周数据中随机选择两天的日记数据(可能包括一次或多次旅行),并将其放入新的数据框中。下面详细介绍了一个示例数据帧:

代码语言:javascript
复制
Df1 <- data.frame(ID = c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3), 
                  date = c("1st Nov", "1st Nov", "3rd Nov", "4th Nov","4th Nov","5th Nov","2nd Nov", "2nd Nov", "3nd Nov", "4th Nov","5th Nov","5th Nov","2nd Nov", "2nd Nov", "3nd Nov", "4th Nov","5th Nov"))

我们将非常感谢您在上述方面提供的任何帮助。

非常感谢,

凯蒂

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 19:35:20

听起来像是个适合plyr的工作。为每个用户随机抽取两天的样本:

代码语言:javascript
复制
library(plyr)
ddply(Df1, .(ID), function(x) {
  unique_days = as.character(unique(x$date))
  if(length(unique_days) < 2) {
    randomSelDays = unique_days
  } else {
    randomSelDays = sample(unique_days, 2)        
  }
  return(x[x$date %in% randomSelDays,])
})

这将为每个唯一标识符返回两个选定日期的所有数据。此外,如果ID只有一天,则返回该天。例如:

代码语言:javascript
复制
  ID    date
1  1 1st Nov
2  1 1st Nov
3  1 3rd Nov
4  2 3nd Nov
5  2 5th Nov
6  2 5th Nov
7  3 2nd Nov
8  3 2nd Nov
9  3 3nd Nov
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8414484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档