我有一个表,它在一个周期的几天中具有不同的%值:
1 5%
2 10%
3 30%
4 10%
5 15%
6 15%
7 15%
我还有另一个表,该表具有不同的特定日期和相应的日期:
6/17/19 1
6/23/19 7
6/27/19 4
7/01/19 7
对于第二个表中的每一对(即[1,7]和[4,7] ),我希望从第一天到第七天以及第四天到第七天的百分比总和,分别在第一个表中。
我考虑了加入表格,但这对基于另一列的条件求和一列的问题没有帮助。哪些功能可能对此有用?
答案 0 :(得分:2)
df1 <- read.table(text="Day Value
1 5%
2 10%
3 30%
4 10%
5 15%
6 15%
7 15%", header=T)
df2 <- read.table(text = "Date StartEnd
6/17/19 1
6/23/19 7
6/27/19 3
7/01/19 7", header=T)
library(tidyverse)
df2 %>%
mutate(id = rep(1:(n()/2), each=2)) %>%
group_by(id) %>%
expand(SE=min(StartEnd):max(StartEnd)) %>%
left_join(df1, by=c("SE"="Day")) %>%
mutate(Value = as.numeric(sub("%", "", Value))) %>%
summarise(Value = sum(Value)) %>%
ungroup() %>%
left_join({df2 %>% mutate(id = rep(1:(n()/2), each=2))},., by='id') %>%
select(-id)
#> Date StartEnd Value
#> 1 6/17/19 1 100
#> 2 6/23/19 7 100
#> 3 6/27/19 3 85
#> 4 7/01/19 7 85
由reprex package(v0.3.0)于2019-06-17创建