Изменить порядок строк в файле excel с помощью R

#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