我有一个数据框:
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。
答案 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))