2017-08-30 49 views
0

我有以下面板数据获得观测的描述性统计与年完整数据的中的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

+1

你能分享你想要的输出吗? – www

回答

2

基础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 
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 
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