Я новичок в R и программировании. У меня есть следующая проблема: у меня есть несколько фреймов данных, например:
Chicago New York Miami
county percent county percent county percent
a 2% d 4% g 30%
b 3% e 6% h 2%
и один вроде:
routes
origin destination travellers
Chicago Miami 100
Chicago New York 200
теперь я хочу умножить каждую строку одного фрейма данных на каждую строку другого и получить что-то вроде:
result
origin destination travellers
Chicago$a Miami$g 2% * 30% *100
Chicago$a Miami$h 2% * 2% *100
Chicago$b Miami$g 3% * 30% *100
Chicago$b Miami$h 3% * 2% *100
Chicago$a New York$d 2% * 4% *200
Chicago$a New York$e 2% * 6% *200
Chicago$b New York$d 3% * 4% *200
Chicago$b New York$e 3% * 6% *200
Моя идея состоит в том, чтобы l oop над фреймом данных маршрутов и захватить для каждой строки правильный фрейм данных источника и назначения и умножить каждое значение исходного df на каждое значение назначения df и назначьте результаты новому фрейму данных. Для получения правильных фреймов данных случай переключения может быть решением, например:
switch(routes$origin,
"Chicago" = df_origin <-Chicago,
"Miami" = df_origin<-Miami,
"New York" = df_origin<-New York,
)
switch(routes$destination,
"Chicago" = df_destination <-Chicago,
"Miami" = df_destination<-Miami,
"New York" = df_destination<-New York,
)
Но я не знаю, как это сделать в al oop и назначить результаты умножения новому фрейму данных. Ситуацию довольно сложно объяснить, но я надеюсь, что моя проблема прояснилась. Заранее большое спасибо за каждый совет !!!
вот результаты dput (head (df)):
dput(head(Chicago))
structure(list(county = structure(1:2, .Label = c("a", "b"), class = "factor"),
percent = c(0.02, 0.03)), row.names = 1:2, class = "data.frame")
dput(head(Miami))
structure(list(county = structure(1:2, .Label = c("g", "h"), class = "factor"),
percent = c(0.3, 0.02)), row.names = 1:2, class = "data.frame")
dput(head(New_york))
structure(list(county = structure(1:2, .Label = c("d", "e"), class = "factor"),
percent = c(0.04, 0.06)), row.names = 1:2, class = "data.frame")
dput(head(routes))
structure(list(origin = structure(c(1L, 1L), .Label = "Chicago", class = "factor"),
destination = structure(1:2, .Label = c("Miami", "New York"
), class = "factor"), travellers = c(100, 200)), row.names = 1:2, class = "data.frame")