Context:我有一个调查数据集,每天在6-7天内进行观察,为期大约一年。观察包括党的选择和对政府的信任(利克特-规模)。
问题:N太小,不能每天观察,所以我需要对每个周期的每日观测进行分组。多么?
我尝试了以下几种方法(使用lubridate),但假设每一阶段的观察都从一周开始。
df <- df %>%
group_by(date_week = floor_date(date_variable, "week"))不幸的是,这是一个混乱的局面,因为它需要从周一到周日的所有观测,并将它们聚在一起(从周一开始),但是一些调查期“跨越”了几周,例如星期四到星期三,因此R创建了两个观测周期。
我需要解决这个问题,然后可视化(我正在使用ggplot)。因此,新的日期变量需要在日期风格,它将是完美的,如果它可以从每一个时期的中间日可视化。
数据示例
Date Party N Trust-in-gov-average
"2021-10-02" A 25 1.5
"2021-10-02" B 10 2.5
"2021-10-02" C 15 3.8
"2021-10-03" A 12 1.2
"2021-10-03" B 53 3.2
"2021-10-03" C 23 2.8
"2021-10-04" A 58 1.6
"2021-10-04" B 33 2.6
"2021-10-04" C 44 3.0发布于 2022-01-07 19:52:07
经过了无数个不眠之夜(在一定程度上多亏了除夕),我终于找到了解决问题的办法。这一切都是关于结合润滑油和dplyr。
首先将变量转换为日期格式.
df$date_string <- ymd(df$date_string)然后使用mutate和%withnin%命令提取句点。将名称定义为要定义时间段的日期,例如观察的第一天。
df <- df %>%
mutate(waves = case_when(date_string %within% interval(ymd("2020-09-13"), ymd("2020-09-19")) ~ "2020-09-13",
date_string %within% interval(ymd("2020-09-20"), ymd("2020-10-03")) ~ "2020-09-20",
date_string %within% interval(ymd("2020-10-11"), ymd("2020-10-17")) ~ "2020-10-11",
date_string %within% interval(ymd("2020-10-25"), ymd("2020-10-31")) ~ "2020-10-25"))最后,再次使用ymd-命令将新变量转换回日期变量。
df$waves <- ymd(df$waves)https://stackoverflow.com/questions/70512312
复制相似问题