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