我有一个看起来像这样的数据集:
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
答案 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 )