在tibble中取消嵌套嵌套列

时间:2018-05-02 22:42:07

标签: r dplyr

我正在尝试使用dplyr创建一个嵌套数据框来编写一些JSON,但是我在获取所需输出时遇到了一些问题。一些示例代码:

library(tidyr)
library(dplyr)

df <- data.frame("ID" = c("A", "A", "B", "B"), "level_1" = c("C", "C", "D", 
             "D"),  "values" = c(1,1,2,2), "other_values" = c(1,2,3,4))

df <- df %>% group_by(ID, values) %>% nest() %>% group_by(ID) %>% nest()

这给了我一个输出

# A tibble: 2 x 2
  ID    data            
  <fct> <list>          
1 A     <tibble [2 x 2]>
2 B     <tibble [2 x 2]>

我正在尝试删除list列的data类型,因此输出会更像是

# A tibble: 2 x 2
  ID    data            
  <fct> <chr>          
1 A     <tibble [2 x 2]>
2 B     <tibble [2 x 2]>

甚至可以将tibble存储为列表中未包含的tibble的元素吗?我尝试过的大多数事情都会引发错误,表明情况就是这样。

实际toJSON输出:

[{
        "ID": "A",
        "data": [{
            "values": 1,
            "data": [{
                    "level_1": "C",
                    "other_values": 1
                },
                {
                    "level_1": "C",
                    "other_values": 2
                }
            ]
        }]
    },
    {
        "ID": "B",
        "data": [{
            "values": 2,
            "data": [{
                    "level_1": "D",
                    "other_values": 3
                },
                {
                    "level_1": "D",
                    "other_values": 4
                }
            ]
        }]
    }
]

所需的toJSON输出:

[{
        "ID": "A",
        "data": {
            "values": 1,
            "data": [{
                    "level_1": "C",
                    "other_values": 1
                },
                {
                    "level_1": "C",
                    "other_values": 2
                }
            ]
        }
    },
    {
        "ID": "B",
        "data": {
            "values": 2,
            "data": [{
                    "level_1": "D",
                    "other_values": 3
                },
                {
                    "level_1": "D",
                    "other_values": 4
                }
            ]
        }
    }
]

0 个答案:

没有答案