#r
Вопрос:
В настоящее время у меня есть скрипт R, который извлекает данные с веб-страницы в таблицы html, у меня есть три таблицы, и я хотел бы знать, как соединить или объединить их, одну поверх другой, так как на данный момент результат дает мне таблицы, расположенные рядом друг с другом, и он мне не служит.
library(rvest)
urls.colombia.compra.microsoft <- paste0("https://colombiacompra.gov.co/tienda-virtual-del-estado-colombiano/ordenes-compra?page=",
0:11,
"amp;number_order=amp;state=amp;entity=amp;tool=IAD Software I - Microsoftamp;date_to_= amp;date_from_=")
base.colombia.compra.microsft <- purrr::map_df(urls.colombia.compra.microsoft, ~.x %>% read_html() %>% html_table())
base.colombia.compra.microsft
urls.colombia.compra.google <- paste0("https://colombiacompra.gov.co/tienda-virtual-del-estado-colombiano/ordenes-compra?page=",
0:11,
"amp;number_order=amp;state=amp;entity=amp;tool=IAD Software I - Googleamp;date_to_= amp;date_from_=")
base.colombia.compra.google <- purrr::map_df(urls.colombia.compra.google, ~.x %>% read_html() %>% html_table())
base.colombia.compra.google
urls.colombia.compra.nube <- paste0("https://colombiacompra.gov.co/tienda-virtual-del-estado-colombiano/ordenes-compra?page=",
0:11,
"amp;number_order=amp;state=amp;entity=amp;tool=Nube Pública IIIamp;date_to_= amp;date_from_=")
base.colombia.compra.nube <- purrr::map_df(urls.colombia.compra.nube, ~.x %>% read_html() %>% html_table())
base.colombia.compra.nube
merge(base.colombia.compra.microsft, base.colombia.compra.google, by = "Orden de Compra")
union <- dplyr::full_join(dplyr::full_join(base.colombia.compra.microsft, base.colombia.compra.google, by = "Orden de Compra"), base.colombia.compra.nube, by = "Orden de Compra")
Ответ №1:
Вы можете использовать dplyr::bind_rows
их для объединения в одну таблицу со id
столбцом, чтобы различать эти три.
union <- dplyr::bind_rows(base.colombia.compra.microsft,
base.colombia.compra.google,
base.colombia.compra.nube, .id = 'id')
Ответ №2:
Мы могли бы использовать rbindlist
library(data.table)
union <- rbindlist(list(base.colombia.compra.microsft,
base.colombia.compra.google,
base.colombia.compra.nube), idcol = 'id')