提取列中包含json的列表中的值

时间:2020-07-07 10:09:15

标签: r json dataframe

我有一个数据框:

Agent   Info
A       [{"id": 0, "value": 235, "hours": 40}]
B       [{"id": 1, "value": 771, "hours": 64}]
C       [{"id": 2, "value": 879, "hours": 70}, {"id": 2, "value": 879, "hours": 85}]

我想从列Info中提取值并将它们转换为单独的列,因此输出如下所示:

Agent   Info_id  Info_value   Info_hours
A       0        235          40
B       1        771          64
C       2        879          70
C       2        879          85

我该怎么做?我不知道,我不擅长JSON。

1 个答案:

答案 0 :(得分:0)

您可以在unnest()中使用tidyr

library(jsonlite)
library(tidyverse)

df %>%
  mutate(Info = map(Info, fromJSON)) %>%
  unnest(Info)

# # A tibble: 4 x 4
#   Agent    id value hours
#   <chr> <int> <int> <int>
# 1 A         0   235    40
# 2 B         1   771    64
# 3 C         2   879    70
# 4 C         2   879    85

数据

df <- structure(list(Agent = c("A", "B", "C"), Info = c("[{\"id\": 0, \"value\": 235, \"hours\": 40}]", 
"[{\"id\": 1, \"value\": 771, \"hours\": 64}]", "[{\"id\": 2, \"value\": 879, \"hours\": 70}, {\"id\": 2, \"value\": 879, \"hours\": 85}]"
)), class = "data.frame", row.names = c(NA, -3L))
相关问题