2014-07-15 4 views
2

R에 사용할 .json 파일을 처음으로 가져 왔습니다. '긴'형식의 데이터 프레임을 만들려고합니다. 각 행은 하나의 참여자이며 각 열은 하나의 변수입니다. 내 데이터 집합의 대부분은 fromJSON을 호출 한 후에 호환되지만 하나의 중첩 된 json 구조는 각 참가자의 Null, 1, 2 또는 3 항목 (이론적으로 더 많을 수 있음)이있는 불규칙한 목록을 만듭니다.R의 비정형 데이터 프레임, jsonlite :: fromJSON

샘플 :

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 X n 개의 dataframe에이 목록을 변환 할 수 있습니까?

unlist의 변형은 null 값을 제거합니다. rbind.fill은 항목을 다음 행으로 이동합니다. 물론 cbind.fill이 작동 할 수 있습니까? (cbind a df with an empty df (cbind.fill?)) 플라이어에 숨겨진 것이 있습니까?

의견을 보내 주셔서 감사합니다.

+0

'as.data.frame (t : 자동으로 열 수를 선택하려면

t(sapply(testdf, function(x) { if (is.null(x)) x <- NA_character_ length(x) <- 3 x }) ) 

는, 당신은 첫 번째를 계산해야 testdf, sapply (testdf, length))))'mapply (function (x, y) c (x, rep (NA, max (sapply (testdf, length) 예쁘지는 않지만 작동해야합니다. – jbaums

답변

0

매우 간단합니다 : (

내 생각
nc <- max(sapply(testdf, length)) 
t(sapply(testdf, function(x) { 
    if (is.null(x)) x <- NA_character_ 
    length(x) <- nc 
    x }) 
) 
관련 문제