这是我的数据
## Data
datex <- c(rep("2021-01-18", 61), rep("2021-01-19", 125))
hourx <- c(0,1,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,16,10,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,11,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,16,16,16,16)
seller <- c("dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2","dombsdpapp1","dombsdpapp1","dombsdpapp2","dombsdpapp2")
product <- c("00021460","00021460","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021459","00021459","00021460","00021459","00021460","00021460","00021460","00021459","00021459","00021460","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021459","00021460","00021459","00021459","00021460","00021459","00021459","00021459","00021460","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021459","00021460","00021460","00021460","00021459","00021459","00021460","00021459","00021459","00021460","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021459","00021459","00021460","00021460","00021460","00021460","00021459","00021459","00021460","00021459","00021459","00021460","00021460","00021459","00021459","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021459","00021459","00021459","00021460","00021460","00021460","00021460","00021459","00021459","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021460","00021459","00021460","00021459","00021460","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021460","00021459","00021460","00021459","00021459","00021459","00021460","00021460","00021459","00021459","00021460","00021460","00021460","00021459","00021459","00021460","00021459","00021459","00021459","00021460","00021460","00021460","00021460","00021460","00021460","00021460","00021460","00021460","00021460")
detail <- c("E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","notEnoughBalance","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","E99","notEnoughBalance","E99","success","success","success","E99","success","success","E99","success","E99","success","E99","E99","success","E99","E99","success","E99","success","E99","success","E99","success","E99","success","success","E99","E99","E99","success","success","E99","success","E99","success","E99","success","success","E99","E99","E99","success","E99","success","success","E99","E99","success","E99","success","E99","success","success","E99","E99","success","success","E99","E99","success","E99","success","success","E99","success","E99","success","E99","E99","success","success","E99","E99","success","E99","success","success","E99","E99","E99","success","success","notEnoughBalance","E99","success","success","E99","success","E99","success","notEnoughBalance","E99","success","E99","E99","success","E99","success","success","E99","success","E99","E99","success","E99","success","success","E99","success","success","E99","E99","success","notEnoughBalance","E99","E99","success","E99","success","success","E99","E99","success","success","E99")
status <- c("FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","OK01","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","FI04","OK01","FI04","OK00","OK00","OK00","FI04","OK00","OK00","FI04","OK00","FI04","OK00","FI04","FI04","OK00","FI04","FI04","OK00","FI04","OK00","FI04","OK00","FI04","OK00","FI04","OK00","OK00","FI04","FI04","FI04","OK00","OK00","FI04","OK00","FI04","OK00","FI04","OK00","OK00","FI04","FI04","FI04","OK00","FI04","OK00","OK00","FI04","FI04","OK00","FI04","OK00","FI04","OK00","OK00","FI04","FI04","OK00","OK00","FI04","FI04","OK00","FI04","OK00","OK00","FI04","OK00","FI04","OK00","FI04","FI04","OK00","OK00","FI04","FI04","OK00","FI04","OK00","OK00","FI04","FI04","FI04","OK00","OK00","OK01","FI04","OK00","OK00","FI04","OK00","FI04","OK00","OK01","FI04","OK00","FI04","FI04","OK00","FI04","OK00","OK00","FI04","OK00","FI04","FI04","OK00","FI04","OK00","OK00","FI04","OK00","OK00","FI04","FI04","OK00","OK01","FI04","FI04","OK00","FI04","OK00","OK00","FI04","FI04","OK00","OK00","FI04")
channel <- c("f2","f2","f2","f3","f2","f3","f2","f3","f2","f3","f2","f3","f2","f2","f3","f2","f3","f2","f3","f2","f3","f2","f3","f3","f2","f3","f2","f2","f2","f3","f3","f2","f3","f3","f2","f2","f3","f3","f2","f3","f2","f3","f2","f3","f2","f2","f3","f3","f2","f2","f3","f3","f2","f2","f3","f2","f3","f2","f3","f2","f3","f3","f2","f3","f3","f3","f2","f3","f3","f2","f2","f3","f3","f2","f2","f3","f2","f2","f2","f3","f3","f2","f3","f3","f2","f3","f2","f2","f3","f2","f3","f2","f3","f3","f2","f2","f2","f2","f3","f3","f2","f3","f3","f2","f2","f3","f3","f3","f2","f2","f3","f2","f3","f2","f3","f3","f3","f2","f2","f2","f2","f3","f3","f3","f3","f2","f2","f3","f3","f2","f2","f3","f3","f2","f2","f3","f2","f3","f2","f2","f3","f2","f3","f2","f2","f3","f2","f3","f2","f3","f3","f2","f2","f3","f3","f2","f2","f2","f3","f2","f3","f3","f3","f2","f2","f3","f3","f2","f2","f2","f3","f3","f2","f3","f3","f3","f2","f2","f2","f2","f2","f2","f2","f2","f2","f2")
transaction <- c(1,6,2,5,1,2,1,9,6,12,5,25,14,6,22,9,10,14,15,12,22,12,12,14,9,11,3,3,4,0,1,4,3,1,2,3,3,5,7,5,5,6,9,16,8,13,10,20,15,18,10,19,15,5,13,12,10,12,26,14,0,4,0,0,0,2,0,0,2,0,4,0,6,8,0,2,3,0,2,0,1,0,1,0,2,0,0,2,1,1,0,0,3,0,1,0,3,0,0,6,5,2,0,8,0,0,12,11,0,2,0,11,0,0,14,21,0,0,13,7,0,17,0,0,18,0,7,0,4,4,0,0,7,12,0,13,0,0,13,6,9,0,0,0,16,0,0,16,0,14,0,0,9,0,11,8,0,8,0,0,8,0,10,5,0,15,0,0,3,0,0,8,8,0,0,6,5,0,8,0,0,5,1,0,0,3)
mydata <- data.frame(datex, hourx, seller, product, detail, status, channel, transaction)
我的任务是将中位数添加到组合中。这就是我的意思。这是一个示例:
combination1 <- mydata[(mydata$seller == "dombsdpapp1" & mydata$product == "00021460" & mydata$detail == "E99" & mydata$status == "FI04" & mydata$channel == "f2"),]
combination1
# datex hourx seller product detail status channel transaction
# 1 2021-01-18 0 dombsdpapp1 00021460 E99 FI04 f2 1
# 2 2021-01-18 1 dombsdpapp1 00021460 E99 FI04 f2 6
# 3 2021-01-18 2 dombsdpapp1 00021460 E99 FI04 f2 2
# 5 2021-01-18 3 dombsdpapp1 00021460 E99 FI04 f2 1
# 7 2021-01-18 4 dombsdpapp1 00021460 E99 FI04 f2 1
# 9 2021-01-18 5 dombsdpapp1 00021460 E99 FI04 f2 6
# 11 2021-01-18 6 dombsdpapp1 00021460 E99 FI04 f2 5
# 13 2021-01-18 7 dombsdpapp1 00021460 E99 FI04 f2 14
# 14 2021-01-18 8 dombsdpapp1 00021460 E99 FI04 f2 6
# 16 2021-01-18 9 dombsdpapp1 00021460 E99 FI04 f2 9
# 18 2021-01-18 10 dombsdpapp1 00021460 E99 FI04 f2 14
# 20 2021-01-18 11 dombsdpapp1 00021460 E99 FI04 f2 12
# 22 2021-01-18 12 dombsdpapp1 00021460 E99 FI04 f2 12
# 25 2021-01-18 13 dombsdpapp1 00021460 E99 FI04 f2 9
# 27 2021-01-18 14 dombsdpapp1 00021460 E99 FI04 f2 3
# 28 2021-01-18 15 dombsdpapp1 00021460 E99 FI04 f2 3
# 29 2021-01-18 16 dombsdpapp1 00021460 E99 FI04 f2 4
# 71 2021-01-19 1 dombsdpapp1 00021460 E99 FI04 f2 4
# 77 2021-01-19 2 dombsdpapp1 00021460 E99 FI04 f2 3
# 85 2021-01-19 3 dombsdpapp1 00021460 E99 FI04 f2 2
# 90 2021-01-19 4 dombsdpapp1 00021460 E99 FI04 f2 1
# 97 2021-01-19 5 dombsdpapp1 00021460 E99 FI04 f2 3
# 104 2021-01-19 6 dombsdpapp1 00021460 E99 FI04 f2 8
# 112 2021-01-19 7 dombsdpapp1 00021460 E99 FI04 f2 11
# 120 2021-01-19 8 dombsdpapp1 00021460 E99 FI04 f2 7
# 130 2021-01-19 9 dombsdpapp1 00021460 E99 FI04 f2 4
# 139 2021-01-19 10 dombsdpapp1 00021460 E99 FI04 f2 13
# 145 2021-01-19 11 dombsdpapp1 00021460 E99 FI04 f2 16
# 156 2021-01-19 12 dombsdpapp1 00021460 E99 FI04 f2 8
# 164 2021-01-19 13 dombsdpapp1 00021460 E99 FI04 f2 5
# 173 2021-01-19 14 dombsdpapp1 00021460 E99 FI04 f2 8
# 179 2021-01-19 15 dombsdpapp1 00021460 E99 FI04 f2 8
# 183 2021-01-19 16 dombsdpapp1 00021460 E99 FI04 f2 1
从结果中我们可以看到 datex "2021-01-18" 和 "2021-01-19" 错过了hourx 从17 到23,所以我们需要将combination1 的中位数加入hourx 17-23。我像这样手动操作
## Add Median into combination1
add_datex1 <- rep("2021-01-18",7); add_datex2 <- rep("2021-01-19",7); add_hourx <- 17:23; add_seller <- rep("dombsdpapp1",7); add_product <- rep("00021460",7); add_detail <- rep("E99",7); add_status <- rep("FI04",7); add_channel <- rep("f2",7); add_transaction <- rep(median(combination1$transaction),7)
add_18 <- data.frame(add_datex1, add_hourx, add_seller, add_product, add_detail, add_status, add_channel, add_transaction)
colnames(add_18) <- colnames(mydata)
add_19 <- data.frame(add_datex2, add_hourx, add_seller, add_product, add_detail, add_status, add_channel, add_transaction)
colnames(add_19) <- colnames(mydata)
new_combination1 <- rbind(combination1[1:17,],add_18, combination1[-(1:17),], add_19)
rownames(new_combination1) <- 1:47
new_combination1
datex hourx seller product detail status channel transaction
#1 2021-01-18 0 dombsdpapp1 00021460 E99 FI04 f2 1
#2 2021-01-18 1 dombsdpapp1 00021460 E99 FI04 f2 6
#3 2021-01-18 2 dombsdpapp1 00021460 E99 FI04 f2 2
#4 2021-01-18 3 dombsdpapp1 00021460 E99 FI04 f2 1
#5 2021-01-18 4 dombsdpapp1 00021460 E99 FI04 f2 1
#6 2021-01-18 5 dombsdpapp1 00021460 E99 FI04 f2 6
#7 2021-01-18 6 dombsdpapp1 00021460 E99 FI04 f2 5
#8 2021-01-18 7 dombsdpapp1 00021460 E99 FI04 f2 14
#9 2021-01-18 8 dombsdpapp1 00021460 E99 FI04 f2 6
#10 2021-01-18 9 dombsdpapp1 00021460 E99 FI04 f2 9
#11 2021-01-18 10 dombsdpapp1 00021460 E99 FI04 f2 14
#12 2021-01-18 11 dombsdpapp1 00021460 E99 FI04 f2 12
#13 2021-01-18 12 dombsdpapp1 00021460 E99 FI04 f2 12
#14 2021-01-18 13 dombsdpapp1 00021460 E99 FI04 f2 9
#15 2021-01-18 14 dombsdpapp1 00021460 E99 FI04 f2 3
#16 2021-01-18 15 dombsdpapp1 00021460 E99 FI04 f2 3
#17 2021-01-18 16 dombsdpapp1 00021460 E99 FI04 f2 4
#18 2021-01-18 17 dombsdpapp1 00021460 E99 FI04 f2 6
#19 2021-01-18 18 dombsdpapp1 00021460 E99 FI04 f2 6
#20 2021-01-18 19 dombsdpapp1 00021460 E99 FI04 f2 6
#21 2021-01-18 20 dombsdpapp1 00021460 E99 FI04 f2 6
#22 2021-01-18 21 dombsdpapp1 00021460 E99 FI04 f2 6
#23 2021-01-18 22 dombsdpapp1 00021460 E99 FI04 f2 6
#24 2021-01-18 23 dombsdpapp1 00021460 E99 FI04 f2 6
#25 2021-01-19 1 dombsdpapp1 00021460 E99 FI04 f2 4
#26 2021-01-19 2 dombsdpapp1 00021460 E99 FI04 f2 3
#27 2021-01-19 3 dombsdpapp1 00021460 E99 FI04 f2 2
#28 2021-01-19 4 dombsdpapp1 00021460 E99 FI04 f2 1
#29 2021-01-19 5 dombsdpapp1 00021460 E99 FI04 f2 3
#30 2021-01-19 6 dombsdpapp1 00021460 E99 FI04 f2 8
#31 2021-01-19 7 dombsdpapp1 00021460 E99 FI04 f2 11
#32 2021-01-19 8 dombsdpapp1 00021460 E99 FI04 f2 7
#33 2021-01-19 9 dombsdpapp1 00021460 E99 FI04 f2 4
#34 2021-01-19 10 dombsdpapp1 00021460 E99 FI04 f2 13
#35 2021-01-19 11 dombsdpapp1 00021460 E99 FI04 f2 16
#36 2021-01-19 12 dombsdpapp1 00021460 E99 FI04 f2 8
#37 2021-01-19 13 dombsdpapp1 00021460 E99 FI04 f2 5
#38 2021-01-19 14 dombsdpapp1 00021460 E99 FI04 f2 8
#39 2021-01-19 15 dombsdpapp1 00021460 E99 FI04 f2 8
#40 2021-01-19 16 dombsdpapp1 00021460 E99 FI04 f2 1
#41 2021-01-19 17 dombsdpapp1 00021460 E99 FI04 f2 6
#42 2021-01-19 18 dombsdpapp1 00021460 E99 FI04 f2 6
#43 2021-01-19 19 dombsdpapp1 00021460 E99 FI04 f2 6
#44 2021-01-19 20 dombsdpapp1 00021460 E99 FI04 f2 6
#45 2021-01-19 21 dombsdpapp1 00021460 E99 FI04 f2 6
#46 2021-01-19 22 dombsdpapp1 00021460 E99 FI04 f2 6
#47 2021-01-19 23 dombsdpapp1 00021460 E99 FI04 f2 6
如何使用 dplyr 为所有组合自动将中位数添加到缺少的“hourx”中?非常感谢。
创建函数以完成hourx
并填充它median
:
fillHour <- function(df){
data.frame(
hourx = 0:23
) %>%
left_join(df, by = "hourx") %>%
replace_na(list(transaction = median(.[["transaction"]], na.rm = TRUE)))
}
nest
数据帧,并使用fillHour
上data
:
mydata %>%
group_by(datex, seller, product, detail, status, channel) %>%
nest() %>%
mutate(data = map(data, fillHour)) %>%
unnest(cols = "data") %>%
ungroup()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句