我想對下面的代碼做兩個調整: 1) 如您所見,我使用了left_join,其中從列中減去coef了All資料集的值DR0..。因此,我想根據插入影像的輸出表更改列名。2)在輸出表,我不希望它有date1,Week并DR1為好。所以我希望它看起來和我的影像輸出表完全一樣。
library(dplyr)
df1 <- structure(list(date1 = c("2021-06-28", "2021-06-28", "2021-06-28", "2021-06-28"), date2 = c("2021-06-30", "2021-06-30", "2021-07-01", "2021-07-01"), Category = c("FDE", "ABC", "FDE", "ABC"), Week = c("Wednesday", "Wednesday", "Friday", "Friday"), DR1 = c(4, 1, 6, 3), DR01 = c(4, 1, 4, 3), DR02 = c(4, 2, 6, 2), DR03 = c(9, 5, 4, 7), DR04 = c(5, 4, 3, 2), DR05 = c(5, 4, 5, 4), DR06 = c(2, 4, 3, 2)), class = "data.frame", row.names = c(NA, -4L))
date1 date2 Category Week DR1 DR01 DR02 DR03 DR04 DR05 DR06
1 2021-06-28 2021-06-30 FDE Wednesday 4 4 4 9 5 5 2
2 2021-06-28 2021-06-30 ABC Wednesday 1 1 2 5 4 4 4
3 2021-06-28 2021-07-01 FDE Friday 6 4 6 4 3 5 3
4 2021-06-28 2021-07-01 ABC Friday 3 3 2 7 2 4 2
All <- structure(list(date2 = c("2021-06-30", "2021-06-30", "2021-07-01", "2021-07-01"), Category = c("FDE", "ABC", "FDE", "ABC"), coef = c(4L, 1L, 6L, 3L)), class = "data.frame", row.names = c("1", "2", "3", "4"))
date2 Category coef
1 2021-06-30 FDE 4
2 2021-06-30 ABC 1
3 2021-07-01 FDE 6
4 2021-07-01 ABC 3
left_join(All, df1, by = c("date2", "Category")) %>%
mutate(across(starts_with("DR0"), ~ coef - .))
date2 Category coef date1 Week DR1 DR01 DR02 DR03 DR04 DR05 DR06
1 2021-06-30 FDE 4 2021-06-28 Wednesday 4 0 0 -5 -1 -1 2
2 2021-06-30 ABC 1 2021-06-28 Wednesday 1 0 -1 -4 -3 -3 -3
3 2021-07-01 FDE 6 2021-06-28 Friday 6 2 0 2 3 1 3
4 2021-07-01 ABC 3 2021-06-28 Friday 3 0 1 -4 1 -1 1

uj5u.com熱心網友回復:
你可以試試
library(dplyr)
v1<- df1 %>%
select(starts_with("DR0")) %>% names %>%
paste0("coef-",.)
left_join(All, df1, by = c("date2", "Category")) %>%
mutate(across(starts_with("DR0"), ~ coef - .)) %>%
select(-date1, -Week, -DR1) %>%
rename_at(-c(1:3), ~v1)
date2 Category coef coef-DR01 coef-DR02 coef-DR03 coef-DR04 coef-DR05 coef-DR06
1 2021-06-30 FDE 4 0 0 -5 -1 -1 2
2 2021-06-30 ABC 1 0 -1 -4 -3 -3 -3
3 2021-07-01 FDE 6 2 0 2 3 1 3
4 2021-07-01 ABC 3 0 1 -4 1 -1 1
或者
left_join(All, df1, by = c("date2", "Category")) %>%
mutate(across(starts_with("DR0"), ~ coef - .)) %>%
select(-date1, -Week, -DR1) %>%
rename_at(vars(starts_with("DR{0-9}")), ~v1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343289.html
標籤:r
上一篇:在R中格式化日期
下一篇:從多個段落中提取句子
