2013-09-26 9 views
7

कुछ R datasets काफी आसानी से loaded into a Pandas DataFrame or Panel हो सकता है:लोड उच्च आयामी आर डाटासेट

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

यह रूप में लंबे समय के रूप में आर डाटासेट के आयाम < = 3. उच्च आयामी डेटासेट एक प्रिंट है काम करने के लिए प्रकट होता है त्रुटि संदेश:

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

यह त्रुटि संदेश rpy/common.py_convert_array समारोह में निकलती है।

ज़रूर, यह समझ में आता है कि पांडा नहीं सीधे एक DataFrame या कक्ष में एक 4-आयामी मैट्रिक्स जूता-सींग सकता है, लेकिन Titanic तरह डेटासेट लोड करने के लिए कुछ वैकल्पिक हल एक DataFrame में होती है (शायद एक पदानुक्रमित सूचकांक के साथ)?

+1

'यह पहली melt' आर में, और उसके बाद इसे लोड ...:, pandas.rpy.common.load_data ऐसे Titanic के रूप में उच्च आयामी डेटासेट लोड कर सकते हैं? – joran

+0

@ जोरन: धन्यवाद, मुझे लगता है कि काम करता है! – 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

@ Joran के बहुत उपयोगी सुझाव का उपयोग करना,

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

साथ reshape पैकेज को स्थापित करने के बाद मैं के साथ एक पांडा DataFrame में Titanic डाटासेट लोड करने में कामयाब रहे:

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()) 

जो मुद्रित

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 
+2

खुशी है कि यह काम किया। एफवाईआई, ** reshape ** पुराना संस्करण है। इसके बजाय ** reshape2 ** का उपयोग करने लायक हो सकता है। – joran

संबंधित मुद्दे