Поскольку входные данные не были воспроизведены в вопросе воспроизводимым образом, возникает вопрос относительно того, является ли столбец coordinates
на самом деле списком, как указано в вопросе, или что на самом деле имелось в виду, что это столбец, разделенный запятымисимвольные строки.В конце примечания мы показываем оба воспроизводимых элемента, а здесь мы показываем, как обрабатывать оба случая:
координат - это столбец строк символов
library(dplyr)
library(tidyr)
DFstring %>%
separate(coordinates, c("Lat", "Lon"), sep = ", ", convert = TRUE)
, что дает:
vsn address Lat Lon
1 079 Ashland Ave & Elston Ave Chicago IL -87.66826 41.91873
2 097 Pulaski Rd & 71st St Chicago IL -87.72242 41.76412
3 0A3 Long Ave & Lawrence Ave Chicago IL -87.76257 41.96759
столбец координат представляет собой список
library(dplyr)
DFlist %>%
rowwise %>%
mutate(Lat = as.numeric(coordinates[1]), Lon = as.numeric(coordinates[2])) %>%
ungroup %>%
select(-coordinates)
, дающий:
# A tibble: 3 x 4
vsn address Lat Lon
<chr> <chr> <dbl> <dbl>
1 079 Ashland Ave & Elston Ave Chicago IL -87.7 41.9
2 097 Pulaski Rd & 71st St Chicago IL -87.7 41.8
3 0A3 Long Ave & Lawrence Ave Chicago IL -87.8 42.0
Примечание
Lines <- "vsn;address;coordinates
079;Ashland Ave & Elston Ave Chicago IL;-87.66826, 41.91873
097;Pulaski Rd & 71st St Chicago IL;-87.72242, 41.76412
0A3;Long Ave & Lawrence Ave Chicago IL;-87.76257, 41.96759"
DFstring <- read.table(text = Lines, header = TRUE, sep = ";", as.is = TRUE,
strip.white = TRUE)
DFlist <- DFstring
DFlist$coordinates <- strsplit(DFstring$coordinates, ", ")
Обновление
Обратите внимание, что код ужеопубликованный выше работает с выводом dput, который был добавлен к вопросу.
DF <-
structure(list(coordinates = list(c(-87.668257, 41.918733), c(-87.72242,
41.764122), c(-87.76257, 41.96759))), row.names = c(53L, 76L,
84L), class = "data.frame")
# same as code above except we use DF as the input
DF %>%
rowwise %>%
mutate(Lat = as.numeric(coordinates[1]), Lon = as.numeric(coordinates[2])) %>%
ungroup %>%
select(-coordinates)
, давая:
# A tibble: 3 x 2
Lat Lon
<dbl> <dbl>
1 -87.7 41.9
2 -87.7 41.8
3 -87.8 42.0