如何在面板数据集中包含定义总观察值的变量?

How to include variable defining total observations in a panel data set?

这是我正在使用的面板数据集的示例:

library(data.table)
data <- data.table(ID = c(1,1,1,1,1,2,2,2,2),
                   crop = c(1,2,3,4,5,1,2,3,4))

ID, crop
1, 1
1, 2
1, 3
1, 4
1, 5
2, 1
2, 2
2, 3
2, 4

有几个 ID 变量,每个变量根据它们拥有的 crop 的数量具有不同数量的观察值(行)。

我想创建一个额外的变量来显示 ID 拥有的观察总数。所需的输出如下所示:

ID, crop, total
1, 1, 5
1, 2, 5
1, 3, 5
1, 4, 5
1, 5, 5
2, 1, 4
2, 2, 4
2, 3, 4
2, 4, 4

在 R 中使用 data.table 可以做到这一点吗?

你可以使用

library(data.table)

data[, total := .N, by = ID]

这个returns

   ID crop total
1:  1    1     5
2:  1    2     5
3:  1    3     5
4:  1    4     5
5:  1    5     5
6:  2    1     4
7:  2    2     4
8:  2    3     4
9:  2    4     4