具有唯一值和计数的新数据框
New data frame with unique values and counts
我想根据我的旧数据创建一个新数据 table,其中包括每个日期发生的所有“article_id”的计数(即有三个 article_id 列出的日期是 2001 年 10 月 1 日,所以我想要一栏包含日期,一栏包含文章数“3”)。
这里是数据的输出table:
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 中非常简单,但我是该程序的新手并且没有太多支持所以我非常感谢您的建议 - 非常感谢!
我们可以分组然后 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
预期输出不明确。预期输出的一些假设
- 'N' 的总和 'date'
library(data.table)
dt[, .(N = sum(N, na.rm = TRUE)), by = date]
- 每个日期的唯一 'article_id' 计数
dt1[, .(N = uniqueN(article_id)), by = date]
- 通过 'date'
获得第一个计数
dt1[, .(N = first(N)), by = date]
这里有 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
我想根据我的旧数据创建一个新数据 table,其中包括每个日期发生的所有“article_id”的计数(即有三个 article_id 列出的日期是 2001 年 10 月 1 日,所以我想要一栏包含日期,一栏包含文章数“3”)。
这里是数据的输出table:
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 中非常简单,但我是该程序的新手并且没有太多支持所以我非常感谢您的建议 - 非常感谢!
我们可以分组然后 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
预期输出不明确。预期输出的一些假设
- 'N' 的总和 'date'
library(data.table)
dt[, .(N = sum(N, na.rm = TRUE)), by = date]
- 每个日期的唯一 'article_id' 计数
dt1[, .(N = uniqueN(article_id)), by = date]
- 通过 'date' 获得第一个计数
dt1[, .(N = first(N)), by = date]
这里有 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