【发布时间】:2016-01-06 20:30:53
【问题描述】:
我知道这可以通过 for 循环来完成,但我确信在 data.table 的构造中存在更优雅的解决方案。
我有两个数据表,将使用“iris”来说明我的问题:
library("data.table")
A <- as.data.table(iris) #primary data table
B <- A[Sepal.Width > 3, .N, by = Species] #count from A meeting condition
head(A, 3)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1: 5.1 3.5 1.4 0.2 setosa
#2: 4.9 3.0 1.4 0.2 setosa
#3: 4.7 3.2 1.3 0.2 setosa
B
# Species N
#1: setosa 42
#2: versicolor 8
#3: virginica 17
我想向 B 添加一个新变量,它只是 B 表示的数据集的比例,即对于第一行,输出将类似于:
B[, Proportion := N/nrow(A[Species == "setosa"])]
该索引的 RHS 显然需要是动态的,逐行引用 B 中第一列的值..
正是这个迭代让我难以理解(尽管我觉得它可能与数据表键有关?);非常感谢任何帮助!
【问题讨论】:
标签: r data.table