【发布时间】:2021-10-01 08:43:05
【问题描述】:
你能帮我调整一下我的Sumpk 变量吗?不幸的是,当我运行时它会出错。
library(dplyr)
library(tidyverse)
library(lubridate)
df1 <- structure(
list(date1 = c("2021-06-28","2021-06-28","2021-06-28","2021-06-28"),
date2 = c("2021-04-02","2021-04-02","2021-04-08","2021-04-08"),
Code = c("ABC","CDE","ABC","CDE"),
Week= c("Friday","Friday","Thursday","Thursday"),
DR1 = c(11,17,14,13),
DR01 = c(14,11,14,13), DR02= c(14,12,16,17),DR03= c(19,15,14,13),
DR04 = c(15,14,13,13)),
class = "data.frame", row.names = c(NA, -4L))
> df1
date1 date2 Code Week DR1 DR01 DR02 DR03 DR04
1 2021-06-28 2021-04-02 ABC Friday 11 14 14 19 15
2 2021-06-28 2021-04-02 CDE Friday 17 11 12 15 14
3 2021-06-28 2021-04-08 ABC Thursday 14 14 16 14 13
4 2021-06-28 2021-04-08 CDE Thursday 13 13 17 13 13
x<-df1 %>% select(starts_with("DR"))
x<-cbind(df1, setNames(df1$DR1 - x, paste0(names(x), "_PV")))
pk<-select(x, date2,Code, Week, DR1, ends_with("PV"))
med<-pk %>%
group_by(Code, Week) %>%
summarize(across(ends_with("PV"), median))
> med
# A tibble: 4 x 7
# Groups: Code [2]
Code Week DR1_PV DR01_PV DR02_PV DR03_PV DR04_PV
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ABC Friday 0 -3 -3 -8 -4
2 ABC Thursday 0 0 -2 0 1
3 CDE Friday 0 6 5 2 3
4 CDE Thursday 0 0 -4 0 0
Sumpk<-df1%>%
pivot_longer(-c(date1:Week)) %>%
left_join(med %>% rename_with( ~str_remove(., "_PV")) %>%
pivot_longer(-Week, values_to = "med")) %>%
mutate(new_value = value + med) %>%
select(-c(value:med)) %>%
pivot_wider(names_from = name, values_from = new_value,
names_glue = '{name}_{name}_PV')
【问题讨论】:
-
df1或med的输入是什么?附上的截图是预期的输出?你是怎么计算的? -
Ronak,输出基本上是
df1的列DR01 to DR04与变量med得到的结果之和。示例:02/04 是星期五的 ABC 类别的DR01的值为 14。因此,我需要将此值与变量med获得的结果相加,用于星期五的 ABC 类别在这种情况下 - 3. 因此:14 + (-3) = 11. 你理解得更好吗?