Разблокировать вложенный столбец в таблице - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь создать вложенный фрейм данных с 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]>

Можно ли даже сохранить тиббл как элемент тиббла, которого нет в списке? Большинство вещей, которые я пробовал, приводили к ошибкам, свидетельствующим об этом.

Фактический вывод в JSON:

[{
        "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
                }
            ]
        }]
    }
]

Желаемый вывод в формате JSON:

[{
        "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
                }
            ]
        }
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...