【问题标题】:Calculating a sum in one table based on values in another根据另一个表中的值计算一个表中的总和
【发布时间】:2019-06-17 20:44:22
【问题描述】:

我有一个表格,其中一个周期的天数具有不同的 % 值:

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])我想要从第 1 天到第 7 天和第 4 到第 7 天的百分比总和,分别在第一个表中。

我考虑过加入表格,但这无助于根据另一列的条件对一列求和的问题。哪些功能对此有用?

【问题讨论】:

标签: r dataframe join


【解决方案1】:
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 年 6 月 17 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2021-09-12
    相关资源
    最近更新 更多