使用R将xlsx转换为json使用R

使用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? 请帮帮我。 谢谢。

+0

你的数据不是一个excel但data.frame(或者它的一些变体)。你可以使用'rjson'或'jsonlite'的'toJSON'函数。例如https://*.com/questions/25550711/convert-data-frame-to-json –

+0

这不会把它放到所需的格式@RomanLuštrik。 OP希望将数据放入自定义格式,而不需要做任何工作。从其他q的我不认为R或python是他们的主要语言。 – hrbrmstr

+0

您可以通过编程将数据帧更改为所需的格式。 按第一列和第二列中的唯一值进行分组/迭代,并根据它们生成JSON字符串。你甚至没有表现出尝试,也没有发现问题。 – hrbrmstr

data.tablesplit函数在这里非常有用。

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] 
    } 
    } 
} 
+0

我真的很欣赏JSON错误(dt_split,dataframe =“columns”,pretty = TRUE)。 未使用的参数(dataframe =“columns”,pretty = TRUE) 发生此错误。为什么这个? – Dekalotte

+0

哦,它已经解决了。非常感谢您让我知道! – Dekalotte