2016-08-26 5 views
0

summary(df)에서 깨끗한 결과를 얻을 수있는 방법이 있습니까? 예를 들어 JSON이나 모든 것이 공백을 초과하지 않으며 "최소 : 3"과 같은 실제 항목이 하나의 열에 있습니까? 나는 이런 식으로 뭔가를하고 싶은 :R 요약 할만한 구문 분석 JSON

[ 
    { 
     "column1": { 
      "Min": 1, 
      "Max": 3, 
      "3rd Qu": 5 
      ... 
     } 
    }, 

    { 
     "column2": { 
      "Min": 2, 
      "Max": 4, 
      "3rd Qu": 5, 
      ... 
     } 
    } 
] 
+0

[broom] (https://cran.r-project.org/web/packages/broom/index.html) 패키지를 확인하십시오. – Tutuchan

답변

2

이 많은 옵션이 JSON으로 변환하지만, 당신이 먼저 필요 당신이 (또는 전부) 원하는 방식으로 변환하는 형식으로 데이터를 얻을 수 있습니다. 따라서 JSON의 계층 구조를 결정할 수 있도록 요약을 목록으로 어셈블하는 것이 가장 쉽습니다. 읽기 쉽 (lapply 같은) 배관 및 purrr::map 사용 : 당신이하지 파이프를 할 줄 경우

library(purrr) 

iris %>% map(summary) %>% # make a list of summaries in case both numeric/factor 
    map(as.list) %>%  # coerce each summary to a list 
    jsonlite::toJSON(auto_unbox = TRUE, pretty = TRUE) # convert to JSON, make it legible 

{ 
    "Sepal.Length": { 
    "Min.": 4.3, 
    "1st Qu.": 5.1, 
    "Median": 5.8, 
    "Mean": 5.843, 
    "3rd Qu.": 6.4, 
    "Max.": 7.9 
    }, 
    "Sepal.Width": { 
    "Min.": 2, 
    "1st Qu.": 2.8, 
    "Median": 3, 
    "Mean": 3.057, 
    "3rd Qu.": 3.3, 
    "Max.": 4.4 
    }, 
    "Petal.Length": { 
    "Min.": 1, 
    "1st Qu.": 1.6, 
    "Median": 4.35, 
    "Mean": 3.758, 
    "3rd Qu.": 5.1, 
    "Max.": 6.9 
    }, 
    "Petal.Width": { 
    "Min.": 0.1, 
    "1st Qu.": 0.3, 
    "Median": 1.3, 
    "Mean": 1.199, 
    "3rd Qu.": 1.8, 
    "Max.": 2.5 
    }, 
    "Species": { 
    "setosa": 50, 
    "versicolor": 50, 
    "virginica": 50 
    } 
} 

을 반환, 당신은 purrr없이 작업을 수행 할 수 있습니다

jsonlite::toJSON(lapply(iris, function(x){as.list(summary(x))}), pretty = TRUE, auto_unbox = TRUE) 

같은 것을 돌려줍니다.

+0

대단히 감사합니다. 데이터 프레임에서 lapply가 필요한 이유를 설명해 주시겠습니까? –

+0

'as.list (summary (iris)) '를 호출하면 각 열을 요소로 사용하여 원하는 계층 구조를 제공하지 않고 일부 요약이 다른 것보다 길면'NA'를 삽입합니다. 즉, 여러 개의 작은 요약을 하나의 더 크고 복잡한 것보다 필요한 양식으로 변환하는 것이 더 쉽습니다. – alistaire