如何在 R 中解压这个 jsonlite return 值?
How to unpack this jsonlite return value in R?
我有这个代码:
library(jsonlite)
df <- fromJSON('blarg.json')
来自这个 json(在一个名为 blarg.json
的文件中):
[{ "id": 211,
"sub_question_skus": { "0": 329, "behavior": 216 } },
{ "id": 333,
"sub_question_skus": [ 340, 341 ] },
{ "id": 345,
"sub_question_skus": [ 346, 352 ] },
{ "id": 444,
"sub_question_skus": null }]
生成如下数据框:
> df
id sub_question_skus
1 211 329, 216
2 333 340, 341
3 345 346, 352
4 444 NULL
啊,但是你看,它在 RStudio 查看器中的结构相当复杂:
我想要这样的东西:
df_expanded <- data.frame(id=c(211, 211, 333, 333, 345, 345),
sub_question_sku=c(329,216,340,341,346,352))
> df_expanded
id sub_question_sku
1 211 329
2 211 216
3 333 340
4 333 341
5 345 346
6 345 352
我如何获得它?
对于上下文,我正在尝试更新 rsurveygizmo 以处理来自 Survey Gizmo 的子问题。这对我来说是上坡路。
Hacky,但是一个开始:
df$sub_question_skus <- replace(
df$sub_question_skus,
sapply(df$sub_question_skus, is.null), NA)
as.data.frame(
do.call(
rbind,
Map(f=cbind, id=df$id, sub=df$sub_question_skus)),
row.names = FALSE)
# id sub
# 1 211 329
# 2 211 216
# 3 333 340
# 4 333 341
# 5 345 346
# 6 345 352
# 7 444 NA
我有这个代码:
library(jsonlite)
df <- fromJSON('blarg.json')
来自这个 json(在一个名为 blarg.json
的文件中):
[{ "id": 211,
"sub_question_skus": { "0": 329, "behavior": 216 } },
{ "id": 333,
"sub_question_skus": [ 340, 341 ] },
{ "id": 345,
"sub_question_skus": [ 346, 352 ] },
{ "id": 444,
"sub_question_skus": null }]
生成如下数据框:
> df
id sub_question_skus
1 211 329, 216
2 333 340, 341
3 345 346, 352
4 444 NULL
啊,但是你看,它在 RStudio 查看器中的结构相当复杂:
我想要这样的东西:
df_expanded <- data.frame(id=c(211, 211, 333, 333, 345, 345),
sub_question_sku=c(329,216,340,341,346,352))
> df_expanded
id sub_question_sku
1 211 329
2 211 216
3 333 340
4 333 341
5 345 346
6 345 352
我如何获得它?
对于上下文,我正在尝试更新 rsurveygizmo 以处理来自 Survey Gizmo 的子问题。这对我来说是上坡路。
Hacky,但是一个开始:
df$sub_question_skus <- replace(
df$sub_question_skus,
sapply(df$sub_question_skus, is.null), NA)
as.data.frame(
do.call(
rbind,
Map(f=cbind, id=df$id, sub=df$sub_question_skus)),
row.names = FALSE)
# id sub
# 1 211 329
# 2 211 216
# 3 333 340
# 4 333 341
# 5 345 346
# 6 345 352
# 7 444 NA