如何将 json 转换为 tibble
how to convert json to tibble
我有以下json数据
{"data": {"cat1": ["value1", "value2", "value3", "value4", "value5"], "cat2": ["aaa", "bbb", "ccc"]},"info": ""}
我想把数据转换成下面这样。我怎样才能使用函数“fromJSON”
var1
var2
var3
data
cat1
value1
data
cat1
value2
data
cat1
value3
data
cat1
value4
data
cat1
value5
data
cat2
aaa
data
cat2
bbb
data
cat2
ccc
info
以下是使用 jsonlite
包解决您的问题的基于 tidyverse
的解决方案。在读取 .JSON 文件时,分解 fromJSON
创建的列表结构非常容易。剩下的就是 tidyverse
功能的应用。请注意,Test.json
文件包含与您提供的数据完全相同的数据。
代码
cols = c("var1", "var2", "var3")
A <- fromJSON("Test.json")
B <- A %>%
unique %>%
unlist %>%
as.data.frame %>%
tibble::rownames_to_column() %>%
mutate(rowname = substr(rowname, 1, nchar(rowname) - 1),
var1 = c(rep(names(A)[1], length(rowname) - 1), names(A)[2])) %>%
rename(!!cols[1] := var1, !!cols[2] := rowname, !!cols[3] := .) %>%
select(var1, var2, var3)
输出
var1 var2 var3
1 data cat1 value1
2 data cat1 value2
3 data cat1 value3
4 data cat1 value4
5 data cat1 value5
6 data cat2 aaa
7 data cat2 bbb
8 data cat2 ccc
9 info
我有以下json数据
{"data": {"cat1": ["value1", "value2", "value3", "value4", "value5"], "cat2": ["aaa", "bbb", "ccc"]},"info": ""}
我想把数据转换成下面这样。我怎样才能使用函数“fromJSON”
var1 | var2 | var3 |
---|---|---|
data | cat1 | value1 |
data | cat1 | value2 |
data | cat1 | value3 |
data | cat1 | value4 |
data | cat1 | value5 |
data | cat2 | aaa |
data | cat2 | bbb |
data | cat2 | ccc |
info |
以下是使用 jsonlite
包解决您的问题的基于 tidyverse
的解决方案。在读取 .JSON 文件时,分解 fromJSON
创建的列表结构非常容易。剩下的就是 tidyverse
功能的应用。请注意,Test.json
文件包含与您提供的数据完全相同的数据。
代码
cols = c("var1", "var2", "var3")
A <- fromJSON("Test.json")
B <- A %>%
unique %>%
unlist %>%
as.data.frame %>%
tibble::rownames_to_column() %>%
mutate(rowname = substr(rowname, 1, nchar(rowname) - 1),
var1 = c(rep(names(A)[1], length(rowname) - 1), names(A)[2])) %>%
rename(!!cols[1] := var1, !!cols[2] := rowname, !!cols[3] := .) %>%
select(var1, var2, var3)
输出
var1 var2 var3
1 data cat1 value1
2 data cat1 value2
3 data cat1 value3
4 data cat1 value4
5 data cat1 value5
6 data cat2 aaa
7 data cat2 bbb
8 data cat2 ccc
9 info