我有以下数据框:
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())
但是我无法获得一个带有计数的数字
欢呼
答案 0 :(得分:3)
我们可以使用table
并为每个id
和year
创建观察计数,然后计算出现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)
)