【发布时间】:2018-07-06 19:58:49
【问题描述】:
这个问题类似于How to change type of target column when doing := by group in a data.table in R? 但是,我需要使用.() 表示法。
例子:
a <- data.table(ID = c("A", "B", "C", "A", "B", "C"),
TYPE = c(1, 1, 2, 2, 3, 3),
CLASS = c(1, 2, 3, 4, 5, 6))
b <- a[, .(Count = .N, "Failure Count" = sum(CLASS == "2"),
"Median DIF" = median(TYPE)), by = ID]
有没有办法使用这种不同的符号来做到这一点?这样做的原因是我想创建一个新表,而不是使用 := 表示法向现有表添加一列。
【问题讨论】:
-
您的标题说“更改目标列的类型”,但您的详细信息说“避免复制”(即获取参考?) .这是两个不同的东西 - 是什么?
-
我对“更改目标列的类型”的引用在
b中,错误是它期待一个双精度并得到一个整数,因为a$TYPE是一个整数。第二部分“避免复制”是指我不希望b包含与a相同的所有列,只包含我指定的列。 -
标题还是很混乱和错误的。 data.table
:=的全部意义在于它就地运行,即没有复制。但是当您使用=创建汇总/聚合时,您希望创建一个新表。此外a[..., TYPE := median(TYPE),... ]会破坏现有数据,这可能是错误的。在这种情况下,它会尝试将数字存储在整数中。您不是在询问参考与制作副本,而是在询问“仅在摘要中保留选定的列”。这是通过仅列出您想在.(...)j-表达式中保留的列来处理的。
标签: r data.table