如何根据日期列聚合列

时间:2017-11-07 10:28:08

标签: r

这就是我的数据的样子。称之为' df'。 我想要计算一下' id'为特定日期创建的说2017-11-04。同样,我想算一下'通过'同一日期的日期和逻辑,即2017-11-04。请注意,我提到的日期(2017-11-04)仅作为示例使用,但我希望汇总在' date'中提到的所有日期。列。

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和堆栈,并且不知道基本的语法/规则,所以如果这个问题需要任何编辑,请发表评论。我将做出必要的必要修改。

2 个答案:

答案 0 :(得分:0)

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

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))

这将返回:

# 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

答案 1 :(得分:0)

如果我没有误解你,你想要计算每个df$date的不同值

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)))})

输出:

     Group.1 date id passed logic
1 2017-11-04    1  3      2     2
2 2017-11-05    1  1      0     0