Подмножество одного кадра данных со значениями каждой строки другого столбца данных и столбца суммарного расстояния - PullRequest
1 голос
/ 05 июня 2019

У меня есть два кадра данных df1 и df2, я хочу сгруппировать df1 $ delivery и создать подмножество df2, где один столбец df2 $ destination равен столбцу df1 $ средства, а другой исходный столбец df2 $ не равен одному и тому же средству df1 $ и сумма столбца расстояния df2 $

df1

facility delivery vol
ludhiana  abohar 123
delhi     abohar 234
mumbai    abohar 345
delhi     Adampu 739
jaipur    Adampu 21757
lucknow   Adampu 37449

df2

 source    destination dist
   delhi    ludhiana    10
   mumbai   ludhiana    5
   ludhiana delhi       10
   mumbai   delhi       5
   ludhiana mumbai      5
   delhi    mumbai      5
   delhi    jaipur      5
   jaipur   delhi       5
   delhi    lucknow     10
   lucknow  delhi       10
   jaipur   lucknow     5
   lucknow  jaipur      5

ожидаемый вывод

facility delivery vol   pan_india_dist
ludhiana  abohar  123   10
delhi     abohar  234   15
mumbai    abohar  345   10
delhi     Adampu  739   15
jaipur    Adampu  21757 10
lucknow   Adampu  37449 15

x <- sapply(data4$facility,function(i)sum((mh_mh$destination[data4$facility %in% i]) & (mh_mh$source[!data4$facility %in% i]))

Я пробовал эту формулу, но она выдает ошибку не значимых факторов

1 Ответ

0 голосов
/ 05 июня 2019

Опция с rap и tidyverse

library(rap)
library(tidyverse)
df1 %>% 
    rap(x = ~ filter(df2, destination == facility, source != facility)) %>% 
    mutate(x = map2(x, delivery, ~ 
             .x %>% 
               filter(source %in% df1$facility[df1$delivery == .y])  %>% 
               summarise(pan_india_dist = sum(dist)))) %>%
    unnest
#  facility delivery   vol pan_india_dist
#1 ludhiana   abohar   123             15
#2    delhi   abohar   234             15
#3   mumbai   abohar   345             10
#4    delhi   Adampu   739             15
#5   jaipur   Adampu 21757             10
#6  lucknow   Adampu 37449             15
...