2013-09-26 2 views
7

일부 R datasets 아주 쉽게 loaded into a Pandas DataFrame or Panel 될 수 있습니다로드 높은 차원의 R 데이터 세트

import pandas.rpy.common as com 
infert = com.load_data('infert') 
print(infert.head()) 

이만큼 R 데이터 세트의 크기가 < = 3. 더 높은 차원의 데이터 세트가 인쇄와 같이 작업 표시 오류 메시지 :

In [67]: com.load_data('Titanic') 
Cannot handle dim=4 

이 오류 메시지가 rpy/common.py_convert_array 기능에 기인한다.

확실히, Pandas는 4 차원 매트릭스를 DataFrame 또는 Panel에 직접 구두 수납 할 수 없지만 Titanic과 같은 데이터 세트를 DataFrame (아마도 계층 적 색인)에로드하는 몇 가지 해결 방법이 있습니까? 내가 가진 팬더 DataFrame에 Titanic 데이터 집합을로드 관리

% sudo R 
R> install.packages('reshape') 

으로 reshape 패키지를 설치 한 후, joran의 매우 도움이 제안을 @ 사용

+1

'R에 먼저 melt' 다음로드 산출 ... : pandas.rpy.common.load_dataTitanic 같은 고차원 데이터 세트를로드 할 수 있을까? – joran

+0

@ an란 : 감사합니다, 나는 그것이 효과가 있다고 생각합니다! – unutbu

답변

1

Pandas version 0.13.0 or newer

import pandas.rpy.common as com 
df = com.load_data('Titanic') 
print(df.head()) 

Survived Age  Sex Class value 
0  No Child Male 1st 0.0 
1  No Child Male 2nd 0.0 
2  No Child Male 3rd 35.0 
3  No Child Male Crew 0.0 
4  No Child Female 1st 0.0 
7

:

Class  Sex Age Survived value 
1 1st Male Child  No  0 
2 2nd Male Child  No  0 
3 3rd Male Child  No  35 
4 Crew Male Child  No  0 
5 1st Female Child  No  0 
인쇄
import pandas as pd 
import pandas.rpy.common as com 
import rpy2.robjects as ro 

r = ro.r 
r('library(reshape)') 
df = com.convert_robj(r('melt(Titanic)')) 
print(df.head()) 

+2

다행이었습니다. 참고 ** reshape **는 이전 버전입니다. 대신 ** reshape2 **를 사용하는 것이 좋습니다. – joran