首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据日期列聚合列

如何根据日期列聚合列
EN

Stack Overflow用户
提问于 2017-11-07 18:28:08
回答 2查看 56关注 0票数 0

这就是我的数据的样子。把它叫做'df‘。我希望计算为某个特定日期创建的'id‘的数量,比如2017-11-04。同样,我想计算同一日期的‘通过’日期和逻辑的数量,即2017-11-04。请注意,我提到的日期(2017-11-04)仅用作示例,但我想汇总“日期”列中提到的所有日期。

代码语言:javascript
运行
复制
date            id      passed       logic
2017-11-04      101     2017-11-06   1
2017-11-04      102     2017-11-06   0
2017-11-04      103     2017-11-08   1
2017-11-05      104     NA           NA

PS-2:我刚刚开始R和栈,不知道基本的语法/规则,所以如果这个问题需要任何编辑,请发表评论。我将根据需要进行必要的更改。

EN

回答 2

Stack Overflow用户

发布于 2017-11-07 18:44:31

您可以使用dplyr包通过date使用group_by()对数据帧进行分组,然后使用summarise()对其进行汇总

代码语言:javascript
运行
复制
library(dplyr)

df %>% 
  group_by(date) %>%
  summarise(number_of_ids = length(id),
            number_of_passed_date = length(passed[!is.na(passed)]),
            logic = sum(logic, na.rm = TRUE))

这将返回:

代码语言:javascript
运行
复制
# A tibble: 2 x 4
        date number_of_ids number_of_passed_date logic
      <date>         <int>                 <int> <int>
1 2017-11-04             3                     3     2
2 2017-11-05             1                     0     0
票数 0
EN

Stack Overflow用户

发布于 2017-11-08 11:18:40

如果我没有误解您的话,您希望计算每个df$date的不同值

代码语言:javascript
运行
复制
df <- read.table(text="date,id,passed,logic
2017-11-04,101,2017-11-06,1
2017-11-04,102,2017-11-06,0
2017-11-04,103,2017-11-08,1
2017-11-05,104,NA,NA", sep=",", header=TRUE, stringsAsFactors=FALSE)

aggregate(df, by=list(df$date), FUN=function(x) {sum(!is.na(unique(x)))})

输出:

代码语言:javascript
运行
复制
     Group.1 date id passed logic
1 2017-11-04    1  3      2     2
2 2017-11-05    1  1      0     0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47155582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档