В рамках своей диссертации я анализирую полярность политических партий.Получив набор данных с сообщениями Facebook в JSON, я проанализировал его в R. К сожалению, одна переменная списка вложена:
Мне нужно извлечь $sentiment$polarity$score
из списка в списке внутри списка.
Observations: 63,465
Variables: 5
$ description <chr> "'TEXT'" ...
$ parties <list> ["X", "X", "Y", ...
$ date <date> 2018-03-05, 2018-03-05...
$ title <chr> NA, NA...
$ sentiment <list> [[[0.2998967, "Positief"], ...
Использование glimpse(df$sentiment)
показывает:
$ :List of 2
..$ polarity :List of 2
.. ..$ score : num 0.15
.. ..$ description: chr "Neutraal"
..$ subjectivity:List of 2
.. ..$ score : num 0.65
.. ..$ description: chr "Erg subjectief"
[list output truncated]
EDIT: head (df $ sentiment, n = 1) дает:
[[1]]
[[1]]$`polarity`
[[1]]$`polarity`$`score`
[1] 0.2998967
[[1]]$`polarity`$description
[1] "Positief"
[[1]]$subjectivity
[[1]]$subjectivity$`score`
[1] 0.5458678
[[1]]$subjectivity$description
[1] "Subjectief"
Но,Проблемная часть df$sentiment
существует в (при запуске head(df$sentiment, n=10)
) следующим образом:
[[5]]
named list()
Таким образом, наблюдение содержит пустой список, а не формат, содержащий два других списка.
Я пробовал следующее:
df %>% unnest(sentiment, .drop = FALSE, .sep = '"')
К сожалению, это удвоило мою df, потеряв при этом разницу между polarity$score
и sentiment$score
.
Также я попытался
matrix(unlist(df$sentiment),ncol=4,byrow=TRUE)
К сожалению, это не может справиться с пустыми значениями (т. Е. Когда $sentiment
пусто, а $polarity
не пусто).Таким образом, он создает некорректную матрицу.
Я также поиграл с функциями flatten
, unlist
и tranpose
, но это, похоже, никуда меня не привело.Я не настолько опытен в R, поэтому я надеялся, что кто-нибудь может помочь мне выбрать правильную оценку и ввести ее в качестве столбца для моего информационного кадра.Я надеюсь, что предоставил всю необходимую информацию.