所以我对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:00处的行为都是FEED,则由于它们具有不同的编号,因此仍被识别为不同的行为事件。然后,我按行为类别对数据进行了子集化,以便获得所有一种行为的数据集。但是,在此数据集中,每当我有一个新的行为事件时,我就有数字类别,例如:
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
等等...
现在,我想做的是按Number类别将这个新数据集随机化。因此,我想告诉R以相同的Number值获取每个数据块并重新组织这些块。我尝试使用sample(),但这似乎只能用于按行随机化。如您所见,Number类别的大小也不尽相同。基本上,我想创建一个看起来像这样的新矩阵:
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将每个新的Number类别识别为一个单独的事件,并通过每个新事件而不是按行随机地重组数据。
有谁知道一种方法来做我要在R中做的事情?
您可以创建一个辅助函数,例如
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 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句