#r #xls
#r #xls
Вопрос:
У меня есть такой файл xls:
Я хотел бы написать R-код для его изменения, например, следующим образом
В примере показана только первая строка исходного файла xls, но то же самое относится и ко всем остальным строкам.
Какие-либо предложения, пожалуйста?
Редактировать.воспроизводимый пример:
dput(head(myfile, 4))
structure(list(`{"type":"Feature","geometry":{"type":"Point","coordinates":
[669803.015640121,5123442.04315501]},"properties":{"SCODE":"89940PG","NAME_D":"ETSCH BEI SALURN","NAME_I":"ADIGE A SALORNO","NAME_L":"ETSCH BEI SALURN","NAME_E":"ETSCH BEI SALURN","ALT":210,"LONG":11.20262,"LAT":46.243333}}` = c("{"type":"Feature","geometry":{"type":"Point","coordinates":[626295.144332811,5164467.60475602]},"properties":{"SCODE":"08155PG","NAME_D":"ETSCH BEI EYRS","NAME_I":"ADIGE A ORIS","NAME_L":"ETSCH BEI EYRS","NAME_E":"ETSCH BEI EYRS","ALT":873.99,"LONG":10.64963,"LAT":46.621876}}",
"{"type":"Feature","geometry":{"type":"Point","coordinates":[744723.350800056,5192575.70046406]},"properties":{"SCODE":"45200SF","NAME_D":"Gsies Pfinnalm","NAME_I":"Casies Malga Pfinn","NAME_L":"Gsies Pfinnalm","NAME_E":"Gsies Pfinnalm","ALT":2152,"LONG":12.2096,"LAT":46.8417}}",
"{"type":"Feature","geometry":{"type":"Point","coordinates":[688387.444866793,5165389.11604176]},"properties":{"SCODE":"82500WS","NAME_D":"Rittnerhorn","NAME_I":"Corno del Renon","NAME_L":"Rittnerhorn","NAME_E":"Rittnerhorn","ALT":2260,"LONG":11.4604,"LAT":46.6156}}",
"{"type":"Feature","geometry":{"type":"Point","coordinates":[743964.273827689,5194147.3777763]},"properties":{"SCODE":"45100WS","NAME_D":"Gsies Regelspitze","NAME_I":"Casies Cima Regola","NAME_L":"Gsies Regelspitze","NAME_E":"Gsies Regelspitze","ALT":2747,"LONG":12.2005,"LAT":46.8561}}"
)), .Names = "{"type":"Feature","geometry":{"type":"Point","coordinates":[669803.015640121,5123442.04315501]},"properties":{"SCODE":"89940PG","NAME_D":"ETSCH BEI SALURN","NAME_I":"ADIGE A SALORNO","NAME_L":"ETSCH BEI SALURN","NAME_E":"ETSCH BEI SALURN","ALT":210,"LONG":11.20262,"LAT":46.243333}}", row.names = c(NA,
-4L), class = c("tbl_df", "tbl", "data.frame"))
Комментарии:
1. Привет, вы можете использовать
dput( head( YOURDATA, 3))
, чтобы предоставить нам данные для работы, а не изображение.2. Спасибо @TylerRinker, я изменил свой пост. Я не знал
dput
, надеюсь, мой код в порядке.
Ответ №1:
Вероятно, есть более точные ответы на эту проблему, но это работает с тем набором данных, который вам нужен.
library(jsonlite)
library(dplyr)
lapply(myfile[[1]], function(elem) {
fromJSON(elem) %>%
as.data.frame() %>%
group_by(type) %>%
summarize_all(function(x) if (length(unique(x))== 1 ) x[1] else paste0('[', paste(x, collapse = ', '), ']'))
}) %>%
bind_rows() %>%
setNames(gsub('^[^.] \.', '', colnames(.)))
## type type coordinates SCODE NAME_D NAME_I NAME_L NAME_E ALT LONG LAT
## <fct> <fct> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 Feature Point [626295.144332811, 5164467.60475602] 08155PG ETSCH BEI EYRS ADIGE A ORIS ETSCH BEI EYRS ETSCH BEI EYRS 874. 10.6 46.6
## 2 Feature Point [744723.350800056, 5192575.70046406] 45200SF Gsies Pfinnalm Casies Malga Pfinn Gsies Pfinnalm Gsies Pfinnalm 2152 12.2 46.8
## 3 Feature Point [688387.444866793, 5165389.11604176] 82500WS Rittnerhorn Corno del Renon Rittnerhorn Rittnerhorn 2260 11.5 46.6
## 4 Feature Point [743964.273827689, 5194147.3777763] 45100WS Gsies Regelspitze Casies Cima Regola Gsies Regelspitze Gsies Regelspitze 2747 12.2 46.9