所以我对R有点陌生,所以如果这是个愚蠢的问题,请原谅我。我有一组行为数据,如下所示:
time behavior
10:04:36 FEED
10:04:37 FEED
10:04:38 REST
10:04:39 REST
10:04:40 RUN等等。
我添加了一个列,它将每个新行为编号为一个唯一的数字,如下所示:
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的行为都是饲料,由于它们的数量不同,它们仍然被认为是不同的行为事件。然后,我根据行为类别设置数据,以便拥有所有一种行为的数据集。但是,在这个数据集中,每次我有一个新的行为事件时,我都有数字类别,例如:
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(),但这似乎只适用于按行随机化。如您所见,数字类别的大小也不尽相同。基本上,我想创建一个新的矩阵,如下所示:
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里做什么吗?
发布于 2014-11-03 16:22:00
您可以创建一个助手功能,例如
reorderingFunc <- function(data, indxCol){
indx <- sample(unique(data[, indxCol]))
data[order(unique(data[, indxCol])[match(data[, indxCol], indx)]), ]
}测试
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 1https://stackoverflow.com/questions/26717339
复制相似问题