Обновите столбцы, объединив несколько столбцов - PullRequest
0 голосов
/ 18 мая 2018

У меня есть две таблицы, и мне нужно обновить значения столбца pro_sales в первой таблице со значения pro_sales во второй.

df1 <- data.frame(storecode = c(100,100,100,200,200),
                  productcode = c(1,2,3,1,2), pro_sales = c(0,0,0,0,0))
df2 <- data.frame(storecode = c(100,100,200),
                  productcode = c(1,2,1), pro_sales = c(0,1,0))

Мне нужно присоединиться слева к столбцам storecode и productcode.Ниже должен быть мой финальный стол:

  storecode productcode  pro_sales
1       100           1         0
2       100           2         1
3       100           3         0
4       200           1         0
5       200           2         0 

Мне удалось присоединиться к dplyr, но после этого мне нужна помощь, пожалуйста?

df1 %>%
  left_join(df2,c("storecode"="storecode","productcode"="productcode")) %>% 
  mutate( ???? ) %>%
  select(names, match, value = value.x)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Другой вариант - использовать объединение обновлений с пакетом data.table:

library(data.table)
setDT(df1)
setDT(df2)

df1[df2, on = .(storecode, productcode), pro_sales := i.pro_sales][]

, что дает:

   storecode productcode pro_sales
1:       100           1         0
2:       100           2         1
3:       100           3         0
4:       200           1         0
5:       200           2         0
0 голосов
/ 18 мая 2018
df1 <- data.frame(storecode=c(100,100,100,200,200),
                  productcode=c(1,2,3,1,2),pro_sales=c(0,0,0,0,0))
df2 <- data.frame(storecode=c(100,100,200),
                  productcode=c(1,2,1),pro_sales=c(0,1,0))

library(dplyr)

df1 %>%
  left_join(df2, by = c("storecode","productcode")) %>% 
  mutate(pro_sales.y = coalesce(pro_sales.y, 0)) %>%
  select(storecode, productcode, pro_sales = pro_sales.y)

#   storecode productcode pro_sales
# 1       100           1         0
# 2       100           2         1
# 3       100           3         0
# 4       200           1         0
# 5       200           2         0

Я предполагаю, что если вы хотите обновить значения в первой таблице с учетом второй таблицы, как вы упомянули, тогда значения NA должны быть нулями, а не теми, которые есть в вашей первой таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...