r - 工作日的最近值作为新列
问题描述
有没有一种简单的方法可以做到这一点。我有一个包含值和日期的数据框,并希望添加一个包含最近工作日的值的列 - 我已在下面手动添加为val_recent
.
df <- data.frame(
date = seq(as.Date("2018/01/01"), by = "day", length.out = 20),
val = sample(1:10, 20, replace=TRUE)) %>%
mutate(weekday = strftime(date,'%A'))
date val weekday val_recent
1 20/01/2018 4 Saturday 4
2 19/01/2018 3 Friday 3
3 18/01/2018 4 Thursday 4
4 17/01/2018 10 Wednesday 10
5 16/01/2018 2 Tuesday 2
6 15/01/2018 6 Monday 6
7 14/01/2018 1 Sunday 1
8 13/01/2018 9 Saturday 4
9 12/01/2018 9 Friday 3
10 11/01/2018 7 Thursday 4
11 10/01/2018 8 Wednesday 10
12 9/01/2018 6 Tuesday 2
13 8/01/2018 10 Monday 6
14 7/01/2018 6 Sunday 1
15 6/01/2018 3 Saturday 4
16 5/01/2018 3 Friday 3
17 4/01/2018 10 Thursday 4
18 3/01/2018 4 Wednesday 10
19 2/01/2018 2 Tuesday 2
20 1/01/2018 8 Monday 6
解决方案
只需按周末分组并取第一个值
df%>%
group_by(weekday)%>%
mutate(val2=val[1])
# A tibble: 20 x 5
# Groups: weekday [7]
date val weekday val_recent val2
<chr> <int> <chr> <int> <int>
1 20/01/2018 4 Saturday 4 4
2 19/01/2018 3 Friday 3 3
3 18/01/2018 4 Thursday 4 4
4 17/01/2018 10 Wednesday 10 10
5 16/01/2018 2 Tuesday 2 2
6 15/01/2018 6 Monday 6 6
7 14/01/2018 1 Sunday 1 1
8 13/01/2018 9 Saturday 4 4
9 12/01/2018 9 Friday 3 3
10 11/01/2018 7 Thursday 4 4
11 10/01/2018 8 Wednesday 10 10
12 9/01/2018 6 Tuesday 2 2
13 8/01/2018 10 Monday 6 6
14 7/01/2018 6 Sunday 1 1
15 6/01/2018 3 Saturday 4 4
16 5/01/2018 3 Friday 3 3
17 4/01/2018 10 Thursday 4 4
18 3/01/2018 4 Wednesday 10 10
19 2/01/2018 2 Tuesday 2 2
20 1/01/2018 8 Monday 6 6
推荐阅读
- node.js - 从 request-promise 切换到 node-fetch 后,带有表单数据的 POST 请求失败
- google-bigquery - 通过联合从组合行创建新列
- azure - 在 Azure 自定义数据中运行 shell 脚本
- docker - Azure 管道:多次下载 docker 映像
- python - 在 Django 的管理网站中列出所有订单
- javascript - 调用另一个函数获取返回值后函数返回undefined
- graph-databases - FDB 客户端无法在 macOS Catalina (v10.15.6) 上启动
- c# - 如何调用从另一个脚本检查枚举值的方法?
- mongodb - 甚至无法连接到 Mongodb Atlas 使用UnifiedTopology: true,
- java - 使用 FirebaseDatabase 中的数据填充 Fragment 中的 RecyclerView