【发布时间】:2018-11-25 18:00:20
【问题描述】:
我尝试使用两种方法在 data.table 中添加列,但它返回了不同的结果。但是我不明白为什么,请您给我一个提示吗? 方式一:
avg_tvd <- dev_survey4[Grp==0 | Grp==1, .(avgTVD = mean(TVDmASL, na.rm=TRUE)),
by = .(Grp,WELL,APA_Pair_ID)]
结果如下:
方式二:
avg_tvd <- dev_survey4[Grp==0 | Grp==1, avgTVD := mean(TVDmASL, na.rm=TRUE),
by = .(Grp,WELL,APA_Pair_ID)]
结果如下:
方式1的结果是我想要的。但是为什么方式2有不同的结果?它们之间有两个区别:
- 方式 2 的列多于方式 1;
- 方式 2 的行除了 0 和 1 之外还有 Grps。
【问题讨论】:
-
请提供一个可重现的例子
-
使用方式 1,您不是向表中添加列,而是 (1) 过滤它并 (2) 聚合它,创建一个新表。使用方式 2,您将向表的过滤部分添加一列(不符合过滤器的部分填充 NA)。您应该完成教程; data.table 为此附带了小插图。
标签: r data.table assignment-operator colon-equals