使用 R 将 xlsx 转换为 json
convert xlsx to json using R
我首先拆解了由多张纸组成的 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
...
我想将此 xlsx 文件替换为 json。
{
"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?
请帮我。
谢谢。
data.table
的 split
函数在这里非常有用。
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
:
> library(jsonlite)
> toJSON(dt_split, dataframe = "columns", pretty=TRUE)
{
"Alabama": {
"Hoover": {
"x": [1, 2],
"y": [5, 6]
},
"Dothan": {
"x": [3],
"y": [7]
}
},
"Alsaka": {
"Chugiak": {
"x": [4],
"y": [8]
}
}
}
我首先拆解了由多张纸组成的 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
...
我想将此 xlsx 文件替换为 json。
{
"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? 请帮我。 谢谢。
data.table
的 split
函数在这里非常有用。
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
:
> library(jsonlite)
> toJSON(dt_split, dataframe = "columns", pretty=TRUE)
{
"Alabama": {
"Hoover": {
"x": [1, 2],
"y": [5, 6]
},
"Dothan": {
"x": [3],
"y": [7]
}
},
"Alsaka": {
"Chugiak": {
"x": [4],
"y": [8]
}
}
}