首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >粗糙的数据,在R,jsonlite::来自jsonlite

粗糙的数据,在R,jsonlite::来自jsonlite
EN

Stack Overflow用户
提问于 2014-07-15 23:51:23
回答 1查看 424关注 0票数 2

我刚开始导入.json文件以供在R中使用,我正在尝试创建一个'long‘格式的数据格式--每一行都是一个参与者,每一列都是一个变量。我的大多数数据集在调用fromJSON之后都是兼容的,但是一个嵌套的json结构会导致一个粗糙的列表,每个参与者都有一个Null、1、2或3个条目(理论上可以有更多)。

示例:

代码语言:javascript
复制
testdf <- fromJSON("[[\"MMM\",\"AAA\"],null,[\"GGG\",\"CCC\",\"NNN \"],null,null,[\"AAA\",\"NNN \"],null,[\"MMM\",\"AAA\"],null,null,null,null,[\"MMM\",\"AAA\"],[\"CCC\",\"AAA\"],\"NNN \",[\"MMM\",\"NNN \",\"EEE\"],null,null,[\"CCC\",\"MMM\",\"AAA\"],[\"HHH\",\"AAA\"],\"AAA\",[\"MMM\",\"AAA\",\"NNN \"],[\"CCC\",\"AAA\"],[\"MMM\",\"AAA\",\"NNN \"],[\"AAA\",\"NNN \"],[\"MMM\",\"AAA\"],null,null,null,null,null,null]", flatten=TRUE)

如何将此列表转换为保留空值的32×n数据帧?

取消列表上的变体会删除空值;当然,rbind.fill会将条目移到下一行--像cbind.fill这样的东西能起作用吗?(cbind a df with an empty df (cbind.fill?))隐藏在plyr中的东西?

谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-16 01:58:39

相当简单:

代码语言:javascript
复制
t(sapply(testdf, function(x) { 
  if (is.null(x)) x <- NA_character_ 
  length(x) <- 3
  x })
)

如果要自动选择列数,则需要先计算该列数:

代码语言:javascript
复制
nc <- max(sapply(testdf, length))
t(sapply(testdf, function(x) { 
  if (is.null(x)) x <- NA_character_ 
  length(x) <- nc
  x })
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24770015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档