2013-09-26 18 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'し、それをロードしますか...? – joran

+0

@ヨラン:ありがとう、私はそれが動作すると思います! – unutbu

答えて

1

Pandas version 0.13.0 or newerpandas.rpy.common.load_dataは、Titanicのようなより高い次元のデータセットを読み込むことができます。

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

うれしいことです。 FYI、** reshape **は古いバージョンです。代わりに** reshape2 **を使う価値があります。 – joran

関連する問題