使用R将xlsx转换为json

时间:2017-11-11 08:43:10

标签: json r xlsx

我首先拆开了xlsx文件,该文件由多张纸组成。

# install.packages("readxl")

library(readxl)
library("rjson")

# read_excel reads
df1 <- read_excel("C:/Users/Adminstrator/Downloads/file.xlsx", sheet = 1)
df2 <- read_excel("C:/Users/Adminstrator/Downloads/file.xlsx", sheet = 2)
df3 <- read_excel("C:/Users/Adminstrator/Downloads/file.xlsx", sheet = 3)

df的内容如下。

Alabama Hoover 33.40556 -86.81111
Alabama Hoover 33.40565 -86.81314
Alabama Hoover 33.40555 -86.81343
Alabama Dothan 31.22722 -85.40722
Alabama Gadsden 34.01028 -86.01028
Alaska Chugiak 61.38778 -149.48139
...

我想用json替换这个xlsx文件。

{
  "Alabama" : { 
                "Hoover": {
                           "x":[33.40556, 33.40565, 33.40555],
                           "y":[-86.81111, -86.81314, -86.81343]
                          },
                "Dothan": {
                           "x":[31.22722],
                           "y":[-85.40722]
                          },
                  ...
              },
  "Alaska" : {
               "Chugiak" : {
                            "x":[61.38778],
                            "y":[-149.48139]
                           },
               ...
             }
  ...
}

如何将xlsx文件更改为json? 请帮我。 感谢。

1 个答案:

答案 0 :(得分:3)

split的{​​{1}}功能非常有用。

data.table

你得到:

dd <- data.frame(
  state = c("Alabama", "Alabama", "Alabama", "Alsaka"),
  city = c("Hoover", "Hoover", "Dothan", "Chugiak"),
  x = c(1, 2, 3, 4),
  y = c(5, 6, 7, 8), 
  stringsAsFactors=FALSE
)

library(data.table)
dt <- as.data.table(dd)
dt_split <- split(dt, by=c("state", "city"), keep.by=FALSE, flatten=FALSE)

现在使用> dt_split $Alabama $Alabama$Hoover x y 1: 1 5 2: 2 6 $Alabama$Dothan x y 1: 3 7 $Alsaka $Alsaka$Chugiak x y 1: 4 8

jsonlite