以下代码计算每年的唯一ID数.我的问题是:如何统计new个唯一ID,即前几年没有出现的ID?

  group_by(year) %>% 
  summarize(count=n_distinct(ID))

例如,我需要在下面创建变量WANG_COUNT

Year ID count wanted_count
2000 1 3 3
2000 2 3 3
2000 3 3 3
2001 2 2 0
2001 3 2 0
2002 3 2 1
2002 4 2 1
2003 4 2 1
2003 7 2 1
2003 4 2 1

请参阅下面的数据:

structure(list(Year = c(2000L, 2000L, 2000L, 2001L, 2001L, 2002L, 
2002L, 2003L, 2003L, 2003L), ID = c(1L, 2L, 3L, 2L, 3L, 3L, 4L, 
4L, 7L, 4L), count = c(3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L
), wanted_count = c(3L, 3L, 3L, 0L, 0L, 1L, 1L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA, 
-10L))

推荐答案

library(dplyr)
df %>%
  mutate(cum_new = cumsum(!duplicated(ID))) %>%
  group_by(Year) %>% 
  summarize(total = max(cum_new), .groups = "drop") %>%
  mutate(
    result = c(first(total), diff(total)),
    total = NULL
  ) %>%
  left_join(df, by = "Year")
# # A tibble: 10 × 5
#     Year result    ID count wanted_count
#    <int>  <int> <int> <int>        <int>
#  1  2000      3     1     3            3
#  2  2000      3     2     3            3
#  3  2000      3     3     3            3
#  4  2001      0     2     2            0
#  5  2001      0     3     2            0
#  6  2002      1     3     2            1
#  7  2002      1     4     2            1
#  8  2003      1     4     2            1
#  9  2003      1     7     2            1
# 10  2003      1     4     2            1

使用此数据:

df = read.table(text = 'Year    ID  count   wanted_count
2000    1   3   3
2000    2   3   3
2000    3   3   3
2001    2   2   0
2001    3   2   0
2002    3   2   1
2002    4   2   1
2003    4   2   1
2003    7   2   1
2003    4   2   1', header = T)

R相关问答推荐

创建重复删除的唯一数据集组合列表

在ggplot的注释表格中突出显示最大值

变量计算按R中的行更改

R形式的一维数字线/箱形图样式图表

对lme 4对象运行summary()时出错(diag中的错误(from,names = RST):对象unpackedMatrix_diag_get找不到)

如何在区分不同条件的同时可视化跨时间的连续变量?

如果某些列全部为NA,则更改列

矩阵的堆叠条形图,条形图上有数字作为标签

如何写商,水平线,在一个单元格的表在R

可以替代与NSE一起使用的‘any_of()’吗?

R spatstat Minkowski Sum()返回多个边界

如何根据R中其他变量的类别汇总值?

在R中,如何将误差条放置在堆叠的每个条上?

使用geom_iles在一个切片中包含多个值

使用shiny 中的所选要素行下拉菜单

根据r中另一个文本列中给定的范围对各列求和

以任意顺序提取具有多个可能匹配项的组匹配项

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

识别部分重复行,其中一行为NA,其重复行为非NA

如何在R中添加标识连续日期的新列