r - 创建一个数据表,其中日期为周,列为条目数
问题描述
我正在尝试在 R 中制作一个新的数据表,将日期分组为当月内的周数,例如 6 月 1 日、6 月 2 日、6 月 3 日……然后是一个新列,总结每个内的条目数. 例如,我当前的数据集是:
我正在尝试隔离我已经使用 'Vigilent' 的所有条目data2 <- data2 %>% filter(data2$Activity == "Vigilent")
,但是我现在需要创建一个新的数据集,将条目分组到每月的几周。
我已经使用以下方法将数据分组为一年中的几周:
x <- date2week(data2$Date, week_start = "Sunday", floor_day = TRUE)
table(x)
x
2008-W24 2008-W25 2008-W26
1 3 4
但我希望它采用“6 月 1 日、6 月 2 日等”的格式,以及每周在单独列中的条目数。这可能吗?
structure(list(Date = c("14/06/2008", "18/06/2008", "19/06/2008",
"20/06/2008", "23/06/2008", "25/06/2008", "26/06/2008", "27/06/2008",
"28/06/2008"), Location = c("Park", "Park", "Grassland", "Grassland",
"Grassland", "Grassland", "Grassland", "Forest", "Park"), Age = c("Adult M",
"Adult F", "Adult F", "Adult F", "Adult M", "Adult M", "Adult M",
"Adult M", "Adult F"), Activity = c("Vigilient", "Vigilient",
"Vigilient", "Vigilient", "Vigilient", "Vigilient", "Vigilient",
"Vigilient", "Foraging")), class = "data.frame", row.names = c(NA,
-9L))
例如,我其他列可以打折,我只想知道在 7 月的某一周有多少 Vigilent 事件
解决方案
library(tidyverse)
library(lubridate)
df %>%
dplyr::filter(Activity == "Vigilient") %>%
dplyr::mutate(Date = dmy(Date),
Month = month(Date, label = T, abbr = F),
Month_Week = week(floor_date(Date, unit = "week", week_start = 7))- week(floor_date(Date, unit = "month")) + 1,
Label = sprintf("Week %i %s", Month_Week, Month)) %>%
dplyr::count(Label, name = "Vigilence Count")
输出
Label Vigilence Count
1 Week 2 June 1
2 Week 3 June 3
3 Week 4 June 4
- 大多数日期函数来自
lubridate
库:dmy
,month
,week
. Date
被此代码覆盖。它成为一个日期对象。如果这不是您想要的行为/您需要保留原始Date
列,那么您可能希望在mutate
函数中将其重命名为其他名称。
推荐阅读
- powershell - 使用密码登录微软团队
- javascript - 在 JavaScript 中压缩(挤压)字符串
- sql - 有没有一种优雅的方法可以根据 SQL 中的数组元素按组聚合数据?
- html - 彼此内部的“a”标签和“label”标签不起作用
- bootstrap-5 - Bootstrap 5 间距实用程序类中的“s”和“e”代表什么?
- kubernetes - 从 Kubernetes pod 内的 Linux shell 运行脚本
- .htaccess - 通过 .htaccess 的用户友好 URL
- python - 我可以在多类分类问题中使用 tf.metrics.BinaryAccuracy 吗?
- reactjs - 在 useState 回调中分配时反应 useRef 当前值触发两次
- javascript - 尝试在 Javascript 待办事项列表中编辑按钮