计算一个ID重复年份的次数

时间:2018-07-12 09:04:15

标签: r dataframe dplyr

我有以下数据框:

df = 
id Year Value
1  1    3
1  2    4
2  1    6
2  2    2
2  2    3
3  1    7
3  2    3

我想计算单个ID重复年份的次数。

所需结果:

1

Id 2的第2年有两次,这就是1是结果

的原因

到目前为止,我已经尝试过:

library("dplyr")
df %>% group_by(id, Year) %>% summarize(count=n())

但是我无法获得一个带有计数的数字

欢呼

3 个答案:

答案 0 :(得分:3)

我们可以使用table并为每个idyear创建观察计数,然后计算出现1次以上的计数。

sum(table(df$id, df$Year) > 1)
#[1] 1

如果要在dplyr中完成此操作,请

library(dplyr)
df %>% 
  group_by(id, Year) %>% 
  summarise(count= n()) %>%
  ungroup() %>%
  summarise(new_count = sum(count > 1)) 

#   new_count
#      <int>
#1         1

答案 1 :(得分:1)

只是为了好玩:

数据表解决方案:

数据:

dt<-
fread("id Year Value
1  1    3
1  2    4
2  1    6
2  2    2
2  2    3
3  1    7
3  2    3")

代码:

dt[,.N>1,by=c("id","Year")]$V1 %>% sum

答案 2 :(得分:1)

(快速)替代方法:

sum(sapply(split(df$Year, df$id), function(x) any(duplicated(x))))

位置:

df <- data.frame(
  id = c(1L, 1L, 2L, 2L, 2L, 3L, 3L), 
  Year = c(1L, 2L, 1L, 2L, 2L, 1L, 2L), 
  Value = c(3L, 4L, 6L, 2L, 3L, 7L, 3L)
)