[英]data.table conditional aggregation to list column
我正在嘗試從 data.table 聚合數據以創建一個新列,該列是有條件的先前行的列表。
dt <- data.table(id = c(1,1,1,1,2,2,10,10,10), letter = c('a','a','b','c','a','c','d','d','e'))
先前的示例將此作為解決方案。
dt[, list(lst=list(letter)), by=id]
id lst
1 a,a,b,c
2 a,c
10 d,d,e
我有一個額外的要求,它只在 id 差異小於前一個值的 2 時才聚合
解決方案將接近此:
data.table(groupid=c(1,2),lst=c(list(c('a,a,b,c,a,c')),list(c('d,d,e'))))
groupid lst
1: a,a,b,c,a,c
2: d,d,e
dt[, .(lst = list(letter)), by = .(groupid = cumsum(c(TRUE, diff(id) > 1)))]
# groupid lst
# <int> <list>
# 1: 1 a,a,b,c,a,c
# 2: 2 d,d,e
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.