#r #dplyr
#r #dplyr
Вопрос:
Мне нужно «умножить» два df вместе, чтобы создать все возможные решения для использования в сценарии Tableau.
Сценарий следующий:
У меня есть df1 автомобилей и связанных с ними миль на галлон, и df2 почтовых индексов и связанного с ними расстояния от фиксированной точки (вычисление углеродного следа). Как только я создам df3, я смогу выполнить дополнительные вычисления по всему df, чтобы добраться до моей окончательной метрики.
Ниже я постарался изо всех сил представить образец каждого df и результирующий df3, который я хочу создать. df1 — это 15 000 строк, а df2 — это 535 строк, что означает, что df3 будет содержать 8 миллионов строк.
Возможно, есть лучший способ сделать это в tableau; однако мне удобнее в 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:
Мы можем использовать 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))