【发布时间】:2018-07-09 04:38:26
【问题描述】:
在交互模式下,探索 data.table 中的聚合,我可能会做几十个或几百个实验。在编写了生成聚合所需的最少量代码之后,聚合后的默认列名(V1、V2 等)显然不是很有信息量。通常,我更愿意将一列的简单聚合的默认列名(例如均值或总和)作为基础变量的名称。
所有额外的列名输入都很累人,我想避免这种情况。
在data.table 中是否有任何简单的方法可以做到这一点?
例如一个简化的例子来证明它是否不清楚:
DT = data.table(x =rep(c("b","a","c"),each=3), y_a_long_name=c(1,3,6), v_a_long_name=1:9)
DT[, .(sum(v_a_long_name), mean(y_a_long_name)), by = x]
# x V1 V2
# 1: b 6 3.333333
# 2: a 15 3.333333
# 3: c 24 3.333333
当您开始使用不同的聚合类型函数处理多个列时,上述标签V1、V2 没有帮助。
重复名称的所有额外输入都很乏味,但我希望看到这样的内容:
DT[, .(v_a_long_name = sum(v_a_long_name), y_a_long_name = mean(y_a_long_name)), by = x]
# x v_a_long_name y_a_long_name
# 1: b 6 3.333333
# 2: a 15 3.333333
# 3: c 24 3.333333
尽可能少地打字。例如如果
DT[, .(sum(v_a_long_name), mean(y_a_long_name)), by = x]
默认打印:
# x v_a_long_name y_a_long_name
# 1: b 6 3.333333
# 2: a 15 3.333333
# 3: c 24 3.333333
【问题讨论】:
-
以下答案将阻止
GForce优化您的查询。您的 IDE 没有自动完成功能吗?如果你只是玩玩,我认为使用V1、V5之类的名称不会受到太大影响。如果这不是短暂的,编写显式代码将帮助其他人(包括未来的你)更好地理解你的代码。选择从聚合变量的名称中删除sum和mean让我觉得很麻烦/乞求混淆/错误。 -
欢迎就这些问题发表意见。我认为自动命名排除聚合的方法 没有任何意义(即我认为可以接受的任何解决方案都类似于
v_a_long_name_sum和y_a_long_name_mean) -
是的,自动化包含方法会更好(只是输入更多)。是的,大多数时候代码会被长期保存,所以自动命名会很好
标签: r data.table