start <- data.table(team=c('a', 'a', 'b', 'b', 'b', 'c', 'c'),
pts=c(5, 8, 10, 5, 5, 9, 10))
end <- data.table(team=c('a', 'a', 'b', 'b', 'b', 'c', 'c'),
pts=c(5, 8, 10, 5, 5, 9, 10),
total_pts=c(13,13,20,20,20,19,19))
endtest <- start[, `:=` .(total_pts = sum(pts)), by=team]
你能修复“endtest”以从 dt start 开始获取 dt end 吗?
.(
中的点不正确,原因有两个:
当您使用
`:=`(..)
时,R 期望函数后面有一个括号,而不是点,解决方法是删除点并使用 just
start[, `:=`(total_pts = sum(pts)), by=team]
如果您只执行
start[, .(total_pts=..), by=team]
,则可以正确解析,并且.(..)
表示“用这些括号内的内容替换我的表的内容”,这意味着它将生成(此处)三行,每个team
一行。由于您不想总结,所以它不是您应该使用的。只需使用
start[, total_pts := sum(pts), by=team]
# team pts total_pts
# <char> <num> <num>
# 1: a 5 13
# 2: a 8 13
# 3: b 10 20
# 4: b 5 20
# 5: b 5 20
# 6: c 9 19
# 7: c 10 19