data.table(R)按组聚合时从特定行粘贴值
我正在处理一个古怪的问题。 我有一些数据如下:data.table(R)按组聚合时从特定行粘贴值,r,data.table,aggregate,R,Data.table,Aggregate,我正在处理一个古怪的问题。 我有一些数据如下: 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
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
有简单的出路吗?
感谢您仅对时间进行分组,添加一个包含所有粘贴代码值的新列。然后将其加入到原始表中。按时间分组并分组,然后使用ifelse创建一个新列以使用代码或以前创建的列
dt <- dt[,.(code_temp=paste(ifelse(group!="B",code,""),collapse=", ")), by="time"][
dt, on="time"][
, Fcode := ifelse(group!="B",code,code_temp)][
group=="B",Fcode := substr(Fcode,1,nchar(Fcode)-2)]
dt单独按时间分组,添加一个包含所有粘贴的代码值的新列。然后将其加入到原始表中。按时间分组并分组,然后使用ifelse创建一个新列以使用代码或以前创建的列
dt <- dt[,.(code_temp=paste(ifelse(group!="B",code,""),collapse=", ")), by="time"][
dt, on="time"][
, Fcode := ifelse(group!="B",code,code_temp)][
group=="B",Fcode := substr(Fcode,1,nchar(Fcode)-2)]
dt你的意思是要有这样的东西吗
库(data.table)
dt[,Fcode:=粘贴(代码[组=='A'],折叠=,“”,按=时间][组=='A',Fcode:=代码]
给
> dt
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
样本数据:
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'))
dt你的意思是要有这样的东西吗
库(data.table)
dt[,Fcode:=粘贴(代码[组=='A'],折叠=,“”,按=时间][组=='A',Fcode:=代码]
给
> dt
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
样本数据:
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'))
dt只有A组或B组?B组每次只有一行?C组也有,但适用于A组的规则相同(只需粘贴相同的值)。按时间,B组可以有更多的行。您如何确定组的层次结构?你为什么不检查B组到A组的时间是否重叠?C组是否应与A组和B组进行比较?你的问题不是很清楚。我没说逻辑看起来很奇怪。我问了一个特别的问题:你如何决定团队的层次结构?B之后的组怎么办?换句话说,A
中的%。这就是我对他们问题的理解。如果问题不清楚,就没有理由回答。@Davidernburg组的层次结构如下:A和C的代码保持不变。B的代码采用A上的值。时间戳为我们提供了代码应替换B代码的信息。“我们只有3个组。@Davidernburg OP规定C组应该像A组一样对待,并没有暗示存在其他组。使用=“B”
应该足够了。但我很感激你的建议。这是一本非常实用的手册。OP应该如何使用这个?手动编写每个组?OP没有共享足够的信息来说明,但最坏的情况可能是%
中的%。这就是我对他们问题的理解。如果问题不清楚,就没有理由回答。@Davidernburg组的层次结构如下:A和C的代码保持不变。B的代码采用A上的值。时间戳为我们提供了代码应替换B代码的信息。“我们只有3个组。@Davidernburg OP规定C组应该像A组一样对待,并没有暗示存在其他组。使用=“B”
应该足够了。但我很感激你的建议。这也是一本手册,只适用于两组。或者使用其他名称的组。这也是非常手动的,不能扩展到两个以上的组。或使用其他名称的组。