如何解决R:计算组内的观察次数
使用 R 编程语言,我尝试在此处遵循本教程:Count number of observations per day,month and year in R
我每天都会创建数据,然后每周计算这些数据的总和。在“y.week”文件中,我想添加一个“count”列,列出每周的观察次数。
这是我正在使用的以下代码:
#load libraries
library(xts)
library(ggplot2)
#create data
date_decision_made = seq(as.Date("2014/1/1"),as.Date("2016/1/1"),by="day")
date_decision_made <- format(as.Date(date_decision_made),"%Y/%m/%d")
property_damages_in_dollars <- rnorm(731,100,10)
final_data <- data.frame(date_decision_made,property_damages_in_dollars)
#aggregate and count by week
y.week <-aggregate(property_damages_in_dollars~format(as.Date(date_decision_made),format="%W-%y"),data=final_data,FUN=sum)
counts_week <- data.frame(table(as.Date(index(y.week))))
y.week$count = count_week
但我不认为这是正确的。
然后我尝试每月做同样的事情:
#aggregate and count by month
y.mon<-aggregate(property_damages_in_dollars~format(as.Date(date_decision_made),format="%Y/%m"),FUN=sum)
counts_mon <- data.frame(table(as.Date(index(y.mon))))
y.mon$count = count_mon
通常,我会使用“dplyr”库按组计数(按月计算,按周计算),但我不确定如何“告诉”dplyr 在同一周(或在同月)作为一个“小组”。
谁能告诉我我做错了什么?
谢谢
编辑:可能的答案(由 Ronak Shah 提供):
按周:
date_decision_made = seq(as.Date("2014/1/1"),property_damages_in_dollars)
final_data %>%
mutate(date_decision_made = as.Date(date_decision_made)) %>%
group_by(week = format(date_decision_made,"%W-%y")) %>%
summarise( total = sum(property_damages_in_dollars,na.rm = TRUE),Count = n())
按月:
date_decision_made = seq(as.Date("2014/1/1"),"%Y-%m")) %>%
summarise( total = sum(property_damages_in_dollars,Count = n())
解决方法
如果您保持物体的自然形态会更好。例如,将日期保留为日期而不是字符串。然后你可以使用
library(dplyr)
final_data %>%
mutate(date_decision_made = as.Date(date_decision_made)) %>%
add_count(week = format(date_decision_made,"%W-%y"),name = 'Count')
使用 add_count
是使用 group_by
+ mutate
和 n()
的快捷方式:
final_data %>%
mutate(date_decision_made = as.Date(date_decision_made)) %>%
group_by(week = format(date_decision_made,"%W-%y")) %>%
mutate(Count = n())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。