首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按特定时间间隔分组每日观测

按特定时间间隔分组每日观测
EN

Stack Overflow用户
提问于 2021-12-28 20:44:58
回答 1查看 146关注 0票数 0

Context:我有一个调查数据集,每天在6-7天内进行观察,为期大约一年。观察包括党的选择和对政府的信任(利克特-规模)。

问题:N太小,不能每天观察,所以我需要对每个周期的每日观测进行分组。多么?

我尝试了以下几种方法(使用lubridate),但假设每一阶段的观察都从一周开始。

代码语言:javascript
复制
df <- df %>% 
 group_by(date_week = floor_date(date_variable, "week"))

不幸的是,这是一个混乱的局面,因为它需要从周一到周日的所有观测,并将它们聚在一起(从周一开始),但是一些调查期“跨越”了几周,例如星期四到星期三,因此R创建了两个观测周期。

我需要解决这个问题,然后可视化(我正在使用ggplot)。因此,新的日期变量需要在日期风格,它将是完美的,如果它可以从每一个时期的中间日可视化。

数据示例

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2022-01-07 19:52:07

经过了无数个不眠之夜(在一定程度上多亏了除夕),我终于找到了解决问题的办法。这一切都是关于结合润滑油和dplyr。

首先将变量转换为日期格式.

代码语言:javascript
复制
df$date_string <- ymd(df$date_string)

然后使用mutate和%withnin%命令提取句点。将名称定义为要定义时间段的日期,例如观察的第一天。

代码语言:javascript
复制
    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-命令将新变量转换回日期变量。

代码语言:javascript
复制
 df$waves <- ymd(df$waves)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70512312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档