r - dplyr 中的滑动组

标签 r dplyr

<分区>

我有一个数据集,其中包含每个日期的许多唯一标识符,例如

df <- data.frame(date = as.Date(c("2016-01-01", "2016-01-01", "2016-01-02", "2016-01-02")), 
ids = c(3, 4, 1, 3))

然后我想总结这些信息以获得在当前日期出现的新的唯一 ID 的数量。例如,1 月 1 日有两个唯一 ID(3 和 4)。但是在 1 月 2 日,只有一个新的唯一 ID (1)。因此,生成的数据框应如下所示:

date          n_new_unique_ids
2016-01-01                   2
2016-01-02                   1

dplyr 可以吗?我查看了 lag,但固定的滞后大小在这种情况下没有意义。或者可能使用另一个包?

最佳答案

一种选择是从数据集中删除所有重复的“id”

df %>%
  filter(!(duplicated(ids)|duplicated(ids, fromLast=TRUE)))
#        date ids
#1 2016-01-01   2
#2 2016-01-02   3

更新

使用更新后的数据

df %>%
    arrange(date, ids) %>% 
    filter(!duplicated(ids)) %>% 
    group_by(date) %>% 
    summarise(n_unique_ids = n())
 #       date n_unique_ids
 #      <date>        <int>
 #1 2016-01-01            2
 #2 2016-01-02            1

关于r - dplyr 中的滑动组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391629/

相关文章:

r - 汇总按组返回长度

r - 为 data.frame 和 tbl_df 子集行和列

r - 用 str_count 计算字符串中的点数?

R读取具有时间戳的CSV文件

r - scan(或任何导入函数)在遇到错误后是否可以返回部分结果?

r - R中的findCorrelation函数

r - 在 R 和 dplyr 中按组滞后/领先

sql - 使用 dplyr 创建 SQL 查询 "SELECT * FROM myTable LIMIT 10"

r - 如何测试一段序列中是否有间隙?

r - 与 R 中的日期相关联的条件累积和