根据数据帧在R中创建嵌套键/值对

问题描述 投票:0回答:1

我正在尝试首次将csv转换为JSON格式。将csv读入R时,其格式如下:

col1   col2   col3
1       a      def1
1       b      def2
2       c      def3
2       a      def1

理想情况下,我想遍历数据框,找到这三列的唯一组合,并将JSON的键/值对分离为以下内容:

{ "1":["a", "def1"], ["b", "def2"], "2":["a", "def1"], ["c", "def3"]}

我只能想到在python中实现此目标的方法,但是我在R中执行此过程遇到了困难。有关如何开始使用它的任何建议?

r multidimensional-array key-value csvtojson
1个回答
0
投票

我们可以通过'col1'将split d列的子集(不带'col1')unname,并在其上应用toJSON

library(jsonlite)
toJSON(split(unname(df1[-1]), df1$col1))
#{"1":[["a","def1"],["b","def2"]],"2":[["c","def3"],["a","def1"]]} 

如果需要order ed>

toJSON(split(unname(df1[do.call(order, df1[1:2]),-1]), df1$col1))
#{"1":[["a","def1"],["b","def2"]],"2":[["a","def1"],["c","def3"]]} 

数据

df1 <- structure(list(col1 = c(1L, 1L, 2L, 2L), col2 = c("a", "b", "c", 
"a"), col3 = c("def1", "def2", "def3", "def1")), class = "data.frame",
row.names = c(NA, 
-4L))
    
© www.soinside.com 2019 - 2024. All rights reserved.