这就是我的数据的样子。把它叫做'df‘。我希望计算为某个特定日期创建的'id‘的数量,比如2017-11-04。同样,我想计算同一日期的‘通过’日期和逻辑的数量,即2017-11-04。请注意,我提到的日期(2017-11-04)仅用作示例,但我想汇总“日期”列中提到的所有日期。
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 NAPS-2:我刚刚开始R和栈,不知道基本的语法/规则,所以如果这个问题需要任何编辑,请发表评论。我将根据需要进行必要的更改。
发布于 2017-11-07 18:44:31
您可以使用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发布于 2017-11-08 11:18:40
如果我没有误解您的话,您希望计算每个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 0https://stackoverflow.com/questions/47155582
复制相似问题