【发布时间】:2013-11-16 16:45:24
【问题描述】:
给定一个像下面这样的data.table,我想创建一个新列,即按区域求和的value,其中period == 0。
region period value
1: US 0 10
2: US 1 11
3: Japan 0 12
4: Japan 1 13
典型的data.frame 方法是创建一个单独的帧,按周期过滤,按区域求和,然后以region 作为键与原始帧合并。我想知道data.table 中是否有使用data.table groupby 语法的单行方法。我最接近的是下面的两行方法。
x1 <- data.table(
region=c("US","US","Japan","Japan"),
period=c(0,1,0,1),
value=10:13)
x1[period==0,value0:=sum(value),by=region]
x1[,value0:=min(value0,na.rm=T),by=region]
region period value value0
1: US 0 10 10
2: US 1 11 10
3: Japan 0 12 12
4: Japan 1 13 12
【问题讨论】:
标签: r data.table