根据间隔基于R中的列制作垃圾箱

时间:2019-01-07 23:12:42

标签: r binning

我正在尝试根据特定的时间间隔来创建垃圾箱,并且我希望当试用编号更改时,垃圾箱重新开始计数。这是示例数据:

structure(list(Trial_Nr = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L), seconds = c(1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 
3, 3.25, 3.5, 3.75)), .Names = c("Trial_Nr", "seconds"), class = "data.frame", row.names = c(NA, 
-12L))

这是数据集的样子:

   Trial_Nr seconds
1         1    1.00
2         1    1.25
3         1    1.50
4         1    1.75
5         1    2.00
6         1    2.25
7         2    2.50
8         2    2.75
9         2    3.00
10        2    3.25
11        2    3.50
12        2    3.75

我的目标是在每个试验编号中放入0.50秒的容器,并使容器在新的试验开始时重新开始。仅供参考-实际数据集具有更多数据点,并且秒列间隔不相等。这是我的目标:

   Trial_Nr seconds bin
1         1    1.00   1
2         1    1.25   1
3         1    1.50   2
4         1    1.75   2
5         1    2.00   3
6         1    2.25   3
7         2    2.50   1
8         2    2.75   1
9         2    3.00   2
10        2    3.25   2
11        2    3.50   3
12        2    3.75   3

我已经尝试过剪切功能,并且可以按间隔进行剪切,但是我不知道该如何计算试用编号。谢谢你的帮助!

1 个答案:

答案 0 :(得分:6)

一个简单的print("\n") * 100 就可以做到:

tapply

编辑:

如果myData$bin <- unlist(tapply(myData$seconds, myData$Trial_Nr, function(x) (x-min(x)) %/% 0.5 + 1)) > myData Trial_Nr seconds bin 1 1 1.00 1 2 1 1.25 1 3 1 1.50 2 4 1 1.75 2 5 1 2.00 3 6 1 2.25 3 7 2 2.50 1 8 2 2.75 1 9 2 3.00 2 10 2 3.25 2 11 2 3.50 3 12 2 3.75 3 未排序,trial_Nr可能会弄乱顺序。然后,您可以使用split简单地逐步进行此操作:

tapply