【发布时间】:2018-06-11 12:30:45
【问题描述】:
我正在处理一个古怪的问题。 我有一些这样的数据:
dt<-data.table(time = c('13:00','13:00','13:00','13:15','13:15'),group=c('A','A','B','A','B'),code=c('11b','16b','22c','9c','7y'))
time group code
1: 13:00 A 11b
2: 13:00 A 16b
3: 13:00 B 22c
4: 13:15 A 9c
5: 13:15 B 7y
我正在尝试执行以下操作。创建一个新列 (:= Fgroup),它的值以 group 为条件,并由 time 聚合。
因此,如果group == A,将值粘贴到code 中就足够了。如果group == B,我需要通过time 粘贴A 组的代码(或代码,如果有很多)。
换句话说:
time group code Fcode
1: 13:00 A 11b 11b
2: 13:00 A 16b 16b
3: 13:00 B 22c 11b,16b
4: 13:15 A 9c 9c
5: 13:15 B 7y 9c
有什么简单的方法吗? 谢谢
【问题讨论】:
-
只有A组或B组吗?
-
B 组每次只有一行?
-
还有一个组 C,但适用于组 A 的规则相同(只需粘贴相同的值)。 B组按时间可以有更多行。
-
您如何决定组的层次结构?为什么不检查从 B 组到 A 组的时间是否重叠? C组是否应该与A组和B组都进行比较?你的问题不是很清楚。
-
我没有说逻辑看起来很奇怪。我问了一个具体的问题:您如何确定组的层次结构?以及如何处理 B 之后的组。换句话说,A
标签: r data.table aggregate