我怎样才能在 rpy2 中做到这一点?mydata 是一个数据框,rank 是一个从 1 到 4 的变量
mydata$rank <- factor(mydata$rank)
我怎样才能在 rpy2 中做到这一点?mydata 是一个数据框,rank 是一个从 1 到 4 的变量
mydata$rank <- factor(mydata$rank)
根据此http://rpy.sourceforge.net/rpy2/doc-2.3/html/vector.html#dataframe,您必须以间接方式进行:
In [51]:
import pandas as pd
import rpy2.robjects as ro
import pandas.rpy.common as py2r
In [52]:
DF=pd.DataFrame({'val':[1,1,1,2,2,3,3]})
In [53]:
r_DF = py2r.convert_to_r_dataframe(DF)
In [54]:
print r_DF
val
0 1
1 1
2 1
3 2
4 2
5 3
6 3
In [55]:
from rpy2.robjects.vectors import DataFrame
r_DF2=DataFrame({'factor': ro.r['factor'](r_DF.rx2('val')),
'val': r_DF.rx2('val')})
In [56]:
print r_DF2
val factor
1 1 1
2 1 1
3 1 1
4 2 2
5 2 2
6 3 3
7 3 3