gpt4 book ai didi

r - 如何使用 data.table 计算 R 中的转换表?

转载 作者:行者123 更新时间:2023-12-01 23:53:06 26 4
gpt4 key购买 nike

我想知道如何计算引入新 ID (+1) 和删除 ID (-1) 时的转换表。

例如:

library(data.table)

dt <- data.table(id = c(1,2,3,1,2,3,4,5,1,2,4,5),
year = c(2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016, 2017, 2017, 2017, 2017))

ids <- unique(dt$id)

所以第一年(2016 年)应该是:

0, 0, 0, 1, 1

第二年(2017 年)应该是:

0, 0, -1, 0, 0

最佳答案

这是一种替代方法,它使用交叉联接联接中的聚合。它本质上等同于上面的 dcast()table() 解决方案,但保留长格式的数据:

dt[CJ(year = year, id = id, unique = TRUE), on = .(id, year), .N, by = .EACHI][
, change := N - shift(N), by = id][]
    id year N change
1: 1 2015 1 NA
2: 2 2015 1 NA
3: 3 2015 1 NA
4: 4 2015 0 NA
5: 5 2015 0 NA
6: 1 2016 1 0
7: 2 2016 1 0
8: 3 2016 1 0
9: 4 2016 1 1
10: 5 2016 1 1
11: 1 2017 1 0
12: 2 2017 1 0
13: 3 2017 0 -1
14: 4 2017 1 0
15: 5 2017 1 0

关于r - 如何使用 data.table 计算 R 中的转换表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229866/

26 4 0