我想计算我的PV
变量每个工作日的中位数。也就是说,看变量PV
,可以看出,例如它有三个星期五,即中位数的计算会考虑这三个星期五的数据。
谢谢!
library(dplyr)
df <- structure(
list(Id=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
date1 = c("2021-07-01","2021-07-01","2021-07-01","2021-07-01","2021-04-02",
"2021-04-02","2021-04-02","2021-04-02","2021-04-02","2021-04-02","2021-04-03",
"2021-04-03","2021-04-03","2021-04-03","2021-04-03","2021-04-08","2021-04-08",
"2021-04-07","2021-04-09","2021-04-10","2021-04-10"),
Week= c("Thursday","Thursday","Thursday","Thursday","Friday","Friday","Friday","Friday",
"Friday","Friday","Saturday","Saturday","Saturday","Saturday","Saturday","Thursday",
"Thursday","Friday","Friday","Saturday","Saturday"),
DTPE = c("Ho","Ho","Ho","Ho","","","","","","","","","","","","","","","","Ho","Ho"),
D1 = c(8,1,9, 3,5,4,7,6,3,8,2,3,4,6,7,8,8,6,16,2,3), DR01 = c(4,1,4,3,3,4,3,6,3,7,2,3,4,6,7,8,9,2,6,7,3),
DR02 = c(4,1,4,3,3,4,1,6,3,7,6,6,4,6,7,8,4,2,6,2,3), DR03 = c(7,5,4,3,6,4,1,5,3,6,2,3,4,9,7,8,4,2,6,4,3),
DR04= c(9,5,6,7,3,2,7,4,2,1,5,3,4,6,7,8,4,7,7,4,3),DR05 = c(9,5,4,3,3,7,1,5,3,7,2,3,4,7,7,8,4,2,6,4,3)),
class = "data.frame", row.names = c(NA, -21L))
df<-df %>%
group_by(Id, date1, Week) %>%
select(D1:DR05) %>%
summarise_all(sum)
x<-subset(df, select = DR01:DR05)
x<-cbind(df, setNames(df$D1 - x, paste0(names(x), "_PV")))
PV<-select(x, date1, Week,ends_with("PV"))
PV
Id date1 Week DR01_PV DR02_PV DR03_PV DR04_PV DR05_PV
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 2021-04-02 Friday 7 9 8 14 7
2 1 2021-04-03 Saturday 0 -7 -3 -3 -1
3 1 2021-04-07 Friday 4 4 4 -1 4
4 1 2021-04-08 Thursday -1 4 4 4 4
5 1 2021-04-09 Friday 10 10 10 9 10
6 1 2021-04-10 Saturday -5 0 -2 -2 -2
7 1 2021-07-01 Thursday 9 9 2 -6 0
x %>%
group_by(Week) %>%
summarize(across(ends_with("_PV"), median))
# # A tibble: 3 x 6
# Week DR01_PV DR02_PV DR03_PV DR04_PV DR05_PV
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 Friday 7 9 8 9 7
# 2 Saturday -2.5 -3.5 -2.5 -2.5 -1.5
# 3 Thursday 4 6.5 3 -1 2
如果要合并所有列,一种方法是
PV %>%
ungroup() %>%
select(Week, ends_with("PV")) %>%
tidyr::pivot_longer(-Week) %>%
group_by(Week) %>%
summarize(Med = median(value))
# # A tibble: 3 x 2
# Week Med
# <chr> <dbl>
# 1 Friday 8
# 2 Saturday -2
# 3 Thursday 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句