我正在尝试根据特定的时间间隔来创建垃圾箱,并且我希望当试用编号更改时,垃圾箱重新开始计数。这是示例数据:
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
我已经尝试过剪切功能,并且可以按间隔进行剪切,但是我不知道该如何计算试用编号。谢谢你的帮助!
答案 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