r - 如何使用 dplyr 将列中的值除以 R 中的特定行?
问题描述
所以我目前正在尝试创建一个按小时生成的新列 cookie,但是我收到关于“按小时生成的 cookie”的大小必须为 1,而不是 0 的错误,而关于“按小时生成的 cookie”的某些内容不能被回收到大小 1。但是,我确实得到了一个新列,但计算有点偏离。
样本数据:
working day working week franchise_id measurement amount
01-01-2020 01-01-2020 1 Cookies made 100
01-01-2020 01-01-2020 1 Hours 1
...
03-12-2020 03-11-2020 1 Cookies made 200
03-13-2020 03-11-2020 1 Hours 5
代码:
cookie_data %>% group_by(franchise_id) %>% mutate(cookiesperhour = amount/amount[measurement=="Hours"]) %>% ungroup()
任何帮助是极大的赞赏。
解决方案
pivot_wider
我认为这是用于重新定向数据的理想设置:
library(tidyverse)
df %>%
tidyr::pivot_wider(id_cols = c(`working week`, franchise_id),
names_from = measurement,
values_from = amount) %>%
dplyr::mutate(cookiesperhour = `Cookies made`/Hours)
输出
`working week` franchise_id `Cookies made` Hours cookiesperhour
<chr> <dbl> <dbl> <dbl> <dbl>
1 01-01-2020 1 100 1 100
2 03-11-2020 1 200 5 40
如果您需要维护该结构,那么您可以执行以下操作,只要:
- 该结构使得每个只有两个测量值,
franchise_id
并且work week
- 第一次测量是“制作的饼干”,每组的第二次(或最后一次)测量是“小时”。为了安全起见,您可以预先排序以确保是这种情况,但鉴于所有这些警告,您可以看到为什么这可能不是最好的方法。
df %>%
dplyr::group_by(franchise_id, `working week`) %>%
dplyr::mutate(cookiesperhour = first(amount) / last(amount)) %>%
dplyr::ungroup()
输出
`working day` `working week` franchise_id measurement amount cookiesperhour
<chr> <chr> <dbl> <chr> <dbl> <dbl>
1 01-01-2020 01-01-2020 1 Cookies made 100 100
2 01-01-2020 01-01-2020 1 Hours 1 100
3 03-12-2020 03-11-2020 1 Cookies made 200 40
4 03-13-2020 03-11-2020 1 Hours 5 40
数据
df <- structure(list(`working day` = c("01-01-2020", "01-01-2020",
"03-12-2020", "03-13-2020"), `working week` = c("01-01-2020",
"01-01-2020", "03-11-2020", "03-11-2020"), franchise_id = c(1,
1, 1, 1), measurement = c("Cookies made", "Hours", "Cookies made",
"Hours"), amount = c(100, 1, 200, 5)), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame"))
推荐阅读
- android - React Native 设置了一个可以触发一些代码的警报
- angular - Okta 用户 api 抛出请求正文格式不正确
- c++ - 我想在主类中输入数据(10 个玩家和分数),如何调用 void “ScoresList::add(const GameEntry& e)”?
- c++ - 指向数组的指针和对数组的引用之间的区别
- python - python Counter 是否预期行为如下?
- javascript - javascript fetch 响应 403 错误
- r - 如何以时间为 x 轴使用 geom_col
- python - RPLIDAR A1 没有像 python 预期的那样快速采样
- facebook - 通过 instagram api 发布的问题
- xml - Odoo14:安装自定义模块后更新基本模块时出错