使用 R 中多年的完整数据获取观察的描述性统计数据

Obtaining descriptive statistics of observations with years of complete data in R

我有以下面板数据集

id year Value
1  1     50
2  1     55
2  2     40
3  1     48
3  2     54
3  3     24
4  2     24
4  3     57
4  4     30

我想获得观察有信息可用的年数的描述性统计,例如:只有一年信息的个体数为1,只有两年信息的个体数是一个,而拥有三年可用信息的人数是 2。

lapply(split(df$id, ave(df$year, df$id, FUN = length)), function(x) length(unique(x)))
#$`1`
#[1] 1

#$`2`
#[1] 1

#$`3`
#[1] 2

我们可以使用data.table。将 'data.frame' 转换为 'data.table' (setDT(df1)),按 'id' 分组,得到 'year' 的唯一数字的长度,按该列分组,得到数字行数 (.N)

library(data.table)
setDT(df1)[,  uniqueN(year), .(id)][, .N, V1]
#   V1 N
#1:  1 1
#2:  2 1
#3:  3 2

在 base R 中使用 table 并且它是更快的表亲 tabulate:

table(tabulate(dat$id))

1 2 3 
1 1 2 

table(table(dat$id))

转换为 data.frame:

data.frame(table(tabulate(dat$id)))
  Var1 Freq
1    1    1
2    2    1
3    3    2