Руководство по объединению двух кадров данных, так что каждая строка df2 становится целым столбцом df1, повторяющимся во всех строках df2 - PullRequest
1 голос
/ 26 марта 2019

Мне нужно «умножить» два df вместе, чтобы создать все возможные решения для использования в сценарии Tableau.

Сценарий выглядит следующим образом:

У меня есть df1 автомобилей и связанных с ними MPG, а также df2 почтовых индексов и соответствующее расстояние от них до фиксированной точки (расчет углеродного следа).Как только я создаю df3, я могу сделать больше математики по всему df, чтобы добраться до моей последней метрики.

Я старался изо всех сил ниже представить образец каждого df и результирующий df3, который я собираюсь создать.df1 - 15 000 строк, а df2 - 535 строк, то есть df3 будет иметь 8 млн строк.

Там может быть лучший способ сделать это в таблице;Тем не менее, я чувствую себя более комфортно в R.

DF1

mpg|year|make |model
--------------------
 21|1985|dodge|charger
 19|1993|Audi |100

DF2

zipcode|distace
---------------
 20015 | 8.91
 20020 | 12.72

DF3

mpg|year|make |model  |zipcode|distance
-----------------------------------------
 21|1985|dodge|charger| 20015 |8.91 
 19|1993|Audi |100    | 20015 |8.91
 21|1985|dodge|charger| 20020 |12.72
 19|1993|Audi |100    | 20020 |12.72



1 Ответ

3 голосов
/ 26 марта 2019

Мы можем использовать crossing

library(tidyr)
crossing(DF1, DF2)
#  mpg year  make   model zipcode distance
#1  21 1985 dodge charger   20015     8.91
#2  21 1985 dodge charger   20020    12.72
#3  19 1993  Audi     100   20015     8.91
#4  19 1993  Audi     100   20020    12.72

данные

DF1 <- structure(list(mpg = c(21L, 19L), year = c(1985L, 1993L), make = c("dodge", 
"Audi"), model = c("charger", "100")), class = "data.frame", row.names = c(NA, 
-2L))

DF2 <- structure(list(zipcode = c(20015L, 20020L), distance = c(8.91, 
12.72)), class = "data.frame", row.names = c(NA, -2L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...