R подсчитать количество строк как комбинацию - PullRequest
0 голосов
/ 30 января 2012

У меня есть набор данных, который выглядит следующим образом:
order year value<br> 1 1990 2<br> 1 1990 1<br> 1 1990 1<br> 2 1990 0<br> 3 1990 4<br> 1 1991 3<br> 2 1991 2<br> 2 1991 0

Я пытался подсчитать количество уникальных заказов за конкретный год. Я попытался table(data$year), что дает мне:
1990 1991<br> 5 3

Однако я бы хотел получить:

1990 1991<br> 3 2

Ответы [ 3 ]

4 голосов
/ 30 января 2012

Это сделает свое дело.Он использует 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 
2 голосов
/ 30 января 2012

Обязательные параметры 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]
0 голосов
/ 31 января 2012

Это также можно сделать, позвонив table на заказы unique вместо подробных.

table( unique( df[,c("order","year")] )$year )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...