R将行数计为组合

时间:2012-01-30 17:42:09

标签: r

我有一个看起来像这样的数据集:
order year value
1 1990 2
1 1990 1
1 1990 1
2 1990 0
3 1990 4
1 1991 3
2 1991 2
2 1991 0

我一直在努力获得特定年份的独特订单数量。我试过table(data$year)给了我:
1990 1991
5 3

但是,我想得到:

1990 1991
3 2

3 个答案:

答案 0 :(得分:4)

这样就可以了。它使用tapply()分别计算order每个级别的year唯一值的数量。

df <- read.table(text="order year value
1 1990 2
1 1990 1
1 1990 1
2 1990 0
3 1990 4
1 1991 3
2 1991 2
2 1991 0", header=T)

with(df, tapply(order, year, function(X) length(unique(X))))
# 1990 1991 
#    3    2 

答案 1 :(得分:2)

必需的plyr和data.table选项:

dat <- read.table(text = txt, header = TRUE)

library(plyr)
ddply(dat, "year", summarize, val = length(unique(order)))

library(data.table)
dt <- data.table(dat)
dt[, length(unique(order)), by = year]

答案 2 :(得分:0)

这也可以通过table订单上的unique来完成,而不是详细订单。

table( unique( df[,c("order","year")] )$year )