У меня есть вывод json (из topydo), который имеет (после некоторых манипуляций) столбец, называемый тегами, где теги (если они присутствуют) являются парами данных в списке. Обычно это будет срок оплаты, иногда повторение «re c», а иногда и то и другое. Приведенный ниже воспроизводимый пример, который создает фрейм данных со столбцом 'tags', содержащим списки списков обязательных / повторных c пар.
Я хочу разделить эти списки (подобно pivot_wider
или spread
) но для элементов в списке, поэтому я хочу превратить этот элемент списка:
[[1]]
[,1] [,2]
[1,] "rec" "+6m"
[2,] "due" "2020-02-02"
в два столбца - re c и должное.
Это то, что «теги» Столбец выглядит следующим образом:
> todo.df$tags
[[1]]
[,1] [,2]
[1,] "rec" "+6m"
[2,] "due" "2020-02-02"
[[2]]
list()
[[3]]
[,1] [,2]
[1,] "due" "2020-03-01"
[2,] "rec" "+1y"
[[4]]
[,1] [,2]
[1,] "due" "2020-05-01"
Я пробовал различные функции unnest
, но не могу понять, как перенести даты выполнения и дату c в свои собственные столбцы.
Любая помощь приветствуется.
Воспроизводимый пример:
library(jsonlite)
library(dplyr)
todo.df <- "[{\"contexts\": [], \"priority\": null, \"projects\": [], \"source\": \"organise website review. rec:+6m due:2020-02-02\", \"tags\": [[\"rec\", \"+6m\"], [\"due\", \"2020-02-02\"]], \"text\": \"organise website review.\"}, {\"contexts\": [\"smtl\", \"jim\"], \"priority\": \"B\", \"projects\": [], \"source\": \"(B) create wiki page on installing packages @jim @smtl\", \"tags\": [], \"text\": \"create wiki page on installing packages @jim @smtl\"}, {\"contexts\": [\"smtl\", \"jim\"], \"priority\": null, \"projects\": [], \"source\": \"Joomla mobile interface @smtl @jim due:2020-03-01 rec:+1y\", \"tags\": [[\"due\", \"2020-03-01\"], [\"rec\", \"+1y\"]], \"text\": \"Joomla mobile interface @smtl @jim\"}, {\"contexts\": [\"smtl\", \"jim\"], \"priority\": null, \"projects\": [], \"source\": \"review wiki documents @smtl @jim due:2020-05-01\", \"tags\": [[\"due\", \"2020-05-01\"]], \"text\": \"review wiki documents @smtl @jim\"}]" %>%
fromJSON(simplifyDataFrame = TRUE) %>%
as_tibble() %>%
select (priority, contexts, projects, tags, text)