2017-08-16 105 views
0

1)我有一个名为“UBER”的事务文件
2)我也有一个“Target”df,我需要匹配的总数我的“UBER”总计
3)我需要找到目标和UBER(间〜目标的差异 - UBER)
4),然后我会叠加到尤伯杯那么这将使得UBER =目标如何使用dplyr :: nest来计算两个数据集之间的差异

数据的差异对于UBER-交易文件

UBER <- data.frame(
    Cube = c("UBER", "UBER", "UBER", "UBER"), 
Country = c("AU", "AU", "AU", "AU"), 
Product = c("0001", "0001", "0001", "0001"), 
    LOB = c("xxx", "xxx", "xxx", "xxx"), 
    Mth_Yr = 1:4, 
Revenue = c(5, 5, 5, 5) 
    ) 

目标df茹d是

Target <- data.frame(
    Cube = c("Target", "Target", "Target", "Target"), 
Country = c("AU", "AU", "AU", "AU"), 
Product = c("0001", "0001", "0001", "0001"), 
    LOB = c("xxx", "xxx", "xxx", "xxx"), 
    Mth_Yr = 1:4, 
Revenue = c(10, 10, 10, 10) 
    ) 

我建立了一个功能来帮我分析:

target_less_uber <- function(df){ 

    target <- df %>% #as.data.frame() %>% 
     filter(Cube == "Target") %>% 
     select(Revenue) %>% as.numeric() 

    uber <- df %>% #as.data.frame() %>% 
     filter(Cube == "UBER") %>% 
     select(Revenue) %>% as.numeric()  

    output <- data.frame(Overlay = target - uber) 

    return(output) 

}

这是我尝试过 - 这是不工作

library(dplyr) 
 
library(purrr) 
 

 
ALL <- rbind(Target, UBER) 
 
ALL %>% 
 
     nest(Cube, Revenue) %>% 
 
     transmute(Country, Product, LOB, Mth_Yr, res = map(data, target_less_uber) %>% unnest

任何帮助意见,高度赞赏。

+0

为了确认,你希望两个数据集相匹配的所有四个变量(国家,产品,LOB,Mth_Yr)?每个数据集中只有一行是针对这四个变量的每个组合的? –

+0

@ Z.Lin是的,这是正确的 – cephalopod

回答

1

我不是很熟悉的nest()命令,所以我不能有解决你的代码,但我下面的工作:

inner_join(UBER %>% select(-Cube) %>% rename(UBER = Revenue), 
      Target %>% select(-Cube) %>% rename(Target = Revenue)) %>% 
    mutate(overlay = Target - UBER) %>% 
    select(-UBER, -Target) 
+0

这是一个优雅和简单的答案。简化我的代码非常多。谢谢,非常感谢。 – cephalopod

相关问题