【问题标题】:R: Count number of new observations compared to a previous groupsR:与前一组相比,计算新观察的数量
【发布时间】:2021-03-24 20:53:21
【问题描述】:

我想知道组间发生的新观察次数。

如果我有以下数据:

Year Observation
2009 A
2009 A
2009 B
2010 A
2010 B
2010 C

我想输出是这样的

Year New_Obsevation_Count
2009 2
2010 1

我是 R 新手,真的不知道如何前进。我试过用tidyverse包中的count函数,还是搞不明白。

【问题讨论】:

  • 为什么 2009 年的新观测值是 3 而不是 2?
  • @GKi 感谢您指出这一点。它应该是 2 而不是 3。只是一个错字。
  • 这还不清楚。为什么它应该是2?在这两种情况下,要使最终结果为 2,需要满足哪些条件?在我看来,您想要的只是按Year 计算观察总数,然后只删除第一行。这就是你想要的吗?

标签: r


【解决方案1】:

您可以在Reduce 中使用union

y <- split(x$Observation, x$Year)
data.frame(Year = names(y), nNew =
 diff(lengths(Reduce(union, y, NULL, accumulate = TRUE))))
#  Year nNew
#1 2009    2
#2 2010    1

数据:

x <- read.table(header=TRUE, text="Year     Observation
2009    A
2009    A
2009    B
2010    A
2010    B
2010    C")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多