【发布时间】:2015-10-05 19:15:48
【问题描述】:
假设我们得到了以下数据:
library(data.table)
letters <- sample (LETTERS[1:6], 100, replace = TRUE)
quarks <- sample(c("up", "down", "charme", "strange", "top", "bottom"),
100, replace = TRUE)
measures<- sample(seq(1:6), 100, replace = TRUE)
df <- data.frame(letters, quarks, measures)
df <- data.table(df)
df <- df[,.(count = sum(measures)), by = list(letters, quarks)]
df
letters quarks count
---------------------------
1: A bottom 13
2: A charme 3
3: A down 14
4: A strange 8
5: A top 11
6: A up 14
7: B bottom 8
8: B charme 12
9: B down 3
基本上,我们计算每个夸克和每个字母对应的观测值,使用库data.table 提供的[.,] 函数进行分组。
问题:我想在此附上一个新列,显示每个字母的度量总数,以便每个夸克归一化为有多少具有相同字母。特别是,这可以通过以下方式获得:
df[,.(count = sum(measures)), by = letters]
letters count
1: F 54
2: E 65
3: B 71
4: D 36
5: C 82
6: A 45
通过这种方式,每个单个夸克的每个计数都可以被划分并归一化为我们与同一个字母相关联的总夸克数量。有没有办法仍然使用data.table 来实现这一点?
【问题讨论】:
-
在生成随机示例数据集之前请使用
set.seed。 -
哦,是的,当然,我的错。然而,实际数量在这里并不重要。
-
只是让我们更容易验证我们得到了正确的结果。
-
另外,不确定是否要更改标题,但“部分和”在数学中具有与您在此处所做的不同的特殊含义。 en.wikipedia.org/wiki/Partial_sum
标签: r group-by data.table