使用R将xlsx转换为json使用R
问题描述:
我首先将xlsx文件分开,其中包含多个工作表。是使用R将xlsx转换为json使用R
# 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? 请帮帮我。 谢谢。
答
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]
}
}
}
你的数据不是一个excel但data.frame(或者它的一些变体)。你可以使用'rjson'或'jsonlite'的'toJSON'函数。例如https://*.com/questions/25550711/convert-data-frame-to-json –
这不会把它放到所需的格式@RomanLuštrik。 OP希望将数据放入自定义格式,而不需要做任何工作。从其他q的我不认为R或python是他们的主要语言。 – hrbrmstr
您可以通过编程将数据帧更改为所需的格式。 按第一列和第二列中的唯一值进行分组/迭代,并根据它们生成JSON字符串。你甚至没有表现出尝试,也没有发现问题。 – hrbrmstr