【问题标题】:New data frame with unique values and counts [duplicate]具有唯一值和计数的新数据框 [重复]
【发布时间】:2021-09-11 19:38:10
【问题描述】:

我想从旧的数据表中创建一个新的数据表,其中包括每个日期出现的所有“article_id”的计数(即,列出了日期 2001-10-01 的三个 article_id,所以我'想要一列包含日期,一列包含文章计数“3”)。

这是数据表的输出:

            date       article_id  N
   1: 2001-09-01 FAS_200109_11104  3
   2: 2001-10-01 FAS_200110_11126  6
   3: 2001-10-01 FAS_200110_11157 21
   4: 2001-10-01 FAS_200110_11160  5
   5: 2001-11-01 FAS_200111_11220 26
  ---                               
7359: 2019-08-01  FAZ_201908_2958  7
7360: 2019-09-01  FAZ_201909_3316  8
7361: 2019-09-01  FAZ_201909_3515 13
7362: 2000-12-01 FAZ_200012_92981  3
7363: 2001-08-01 FAZ_200108_86041 14 

所以我必须将唯一的日期值转移到一个新的数据框(这样每个日期只显示一次),以及每个日期显示的 article_id 计数。

我一直在试图弄清楚这一点,但还没有找到关于如何按组(日期)计算字符向量(article_id)出现的确切答案。我认为这在 R 中很简单,但我是该程序的新手,没有太多支持,所以我非常感谢您的建议 - 非常感谢!

【问题讨论】:

  • 你想要每个“日期”的N 的总和,即dt[, .(N = sum(N)), date]

标签: r datatable


【解决方案1】:

预期的输出不清楚。预期产出的一些假设

  1. “日期”的“N”总和
library(data.table)
dt[, .(N = sum(N, na.rm = TRUE)), by = date]
  1. 每个日期的唯一“article_id”计数
dt1[, .(N = uniqueN(article_id)), by = date]
  1. 按“日期”获取第一个计数
dt1[, .(N = first(N)), by = date]

【讨论】:

  • 您好 akrun,非常感谢您的支持!这成功了。
【解决方案2】:

我们可以分组然后summarise:

library(dplyr)
df %>% 
    group_by(date) %>% 
    summarise(n = n())
 date           n
  <chr>      <int>
1 2000-12-01     1
2 2001-08-01     1
3 2001-09-01     1
4 2001-10-01     3
5 2001-11-01     1
6 2019-08-01     1
7 2019-09-01     2

【讨论】:

    【解决方案3】:

    这里有 2 个tidyverse 解决方案:

    图书馆(tidyverse)

    示例数据

    df <- 
      tibble(
        date = ymd(c("2001-09-01","2001-10-01","2001-10-01")),
        article_id = c("FAS_200109_11104","FAS_200110_11126","FAS_200110_11157"),
        N = c(3,6,21)
      )
    

    解决方案

    解决方案 1

    df %>% 
      group_by(date) %>% 
      summarise(N = sum(N,na.rm = TRUE))
    

    解决方案 2

    df %>% 
      count(date,wt = N)
    

    结果

    # A tibble: 2 x 2
      date           n
      <date>     <dbl>
    1 2001-09-01     3
    2 2001-10-01    27
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2018-07-26
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      相关资源
      最近更新 更多