这是对这个问题的直接扩展.我有一个数据集,我想根据变量x和y找到变量v的所有成对组合:
library(data.table)
DT = data.table(x=rep(c("a","b","c"),each=6), y=c(1,1,6), v=1:18)
x y v
1: a 1 1
2: a 1 2
3: a 6 3
4: a 1 4
5: a 1 5
6: a 6 6
7: b 1 7
8: b 1 8
9: b 6 9
10: b 1 10
11: b 1 11
12: b 6 12
13: c 1 13
14: c 1 14
15: c 6 15
16: c 1 16
17: c 1 17 …Run Code Online (Sandbox Code Playgroud) 我想data.table(1.9.6)包的unique-function中有一个错误:
小例子:
test <- data.table(a = c("1", "1", "2", "2", "3", "4", "4", "4"),
b = letters[1:8],
d = c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE))
a b d
1: 1 a TRUE
2: 1 b TRUE
3: 2 c FALSE
4: 2 d FALSE
5: 3 e TRUE
6: 4 f FALSE
7: 4 g FALSE
8: 4 h FALSE
test[d == TRUE, `:=` (b = "M")]
test <- unique(test, by = c("a", "b"))
a b d
1: …Run Code Online (Sandbox Code Playgroud) 我想为 data.table 计算每组的滚动加权平均值,如下所示:
DT <- data.table(group = rep(c(1,2), each = 5), value = 1:10, weight = 11:20)
group value weight
1: 1 1 11
2: 1 2 12
3: 1 3 13
4: 1 4 14
5: 1 5 15
6: 2 6 16
7: 2 7 17
8: 2 8 18
9: 2 9 19
10: 2 10 20
Run Code Online (Sandbox Code Playgroud)
我runner在这个问题Rolling over function with 2 vector arguments 中找到了一个带有包的工作解决方案:
my_weighted_mean <- function(data) {
weighted.mean(data[, 1], w = …Run Code Online (Sandbox Code Playgroud)