首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中按类别分列的随机数据

R中按类别分列的随机数据
EN

Stack Overflow用户
提问于 2014-11-03 15:25:12
回答 1查看 81关注 0票数 2

所以我对R有点陌生,所以如果这是个愚蠢的问题,请原谅我。我有一组行为数据,如下所示:

代码语言:javascript
复制
time      behavior 
10:04:36  FEED     
10:04:37  FEED      
10:04:38  REST 
10:04:39  REST
10:04:40  RUN

等等。

我添加了一个列,它将每个新行为编号为一个唯一的数字,如下所示:

代码语言:javascript
复制
time      behavior Number
10:04:36  FEED     1
10:04:37  FEED     1
10:04:38  REST     2
10:04:39  REST     2
10:04:40  RUN      3

因此,如果10:04:36和10:30的行为都是饲料,由于它们的数量不同,它们仍然被认为是不同的行为事件。然后,我根据行为类别设置数据,以便拥有所有一种行为的数据集。但是,在这个数据集中,每次我有一个新的行为事件时,我都有数字类别,例如:

代码语言:javascript
复制
time      behavior Number
10:04:36  FEED     1
10:04:37  FEED     1
10:30:00  FEED     10
10:30:01  FEED     10 
10:30:02  FEED     10
11:01:00  FEED     21
11:01:01  FEED     21

等等。

现在,我想做的是按数字类别随机化这个新的数据集。因此,我想告诉R,用相同的数值获取每个数据块,并重新组织这些块。我尝试使用sample(),但这似乎只适用于按行随机化。如您所见,数字类别的大小也不尽相同。基本上,我想创建一个新的矩阵,如下所示:

代码语言:javascript
复制
time      behavior Number
10:30:00  FEED     10
10:30:01  FEED     10 
10:30:02  FEED     10    
11:01:00  FEED     21
11:01:01  FEED     21
10:04:36  FEED     1
10:04:37  FEED     1

因此,我希望R能识别每个新的数字类别为一个不同的事件,并随机地按照每一个新事件来重新组织数据,而不是按行。

有人知道我在R里做什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 16:22:00

您可以创建一个助手功能,例如

代码语言:javascript
复制
reorderingFunc <- function(data, indxCol){
  indx <- sample(unique(data[, indxCol]))
  data[order(unique(data[, indxCol])[match(data[, indxCol], indx)]), ]
}

测试

代码语言:javascript
复制
set.seed(111) # Setting a seed so the outcome of `sample` be reproducible
reorderingFunc(df, "Number")
#       time behavior Number
# 3 10:30:00     FEED     10
# 4 10:30:01     FEED     10
# 5 10:30:02     FEED     10
# 6 11:01:00     FEED     21
# 7 11:01:01     FEED     21
# 1 10:04:36     FEED      1
# 2 10:04:37     FEED      1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26717339

复制
相关文章

相似问题

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