Rの私のコードには、次の簡単な割り当てがあります。
df$a<-factor(df$a,levels=c("3","2","1"))
(レベルの順序はプロットで重要なので、これはおそらくこのような割り当てによって行われる必要があります)
どうすれば同じ結果を得ることができrpy2
ますか?次のように構築されたDataFrameがあるとします。
from rpy2 import robjects
d = {'a': robjects.IntVector((1,2,3)), 'b': robjects.IntVector((4,5,6))}
dataf = robjects.DataFrame(d)
ここ'a'
で、Rで行ったように、列のタイプを変更し、その中のレベルの順序を設定したいと思います。rpyを使用することは可能ですか?
Rのレベルを修正するにはfactor
:
>>> from rpy2.robjects.vectors import FactorVector, IntVector
>>> v = FactorVector((1,2,3), levels=IntVector((3,2,1)))
>>> print(v)
[1] 1 2 3
Levels: 3 2 1
DataFrameの列の変更は、次の方法で実行できます。
>>> dataf[dataf.index('a')] = v
注:Rでは、レベルを文字列として指定しながら、数値(整数)を喜んで指定します。Rは静かにそうすることを可能にしますが、Rの「因子」ベクトルの内部表現は整数であり、その混合は不快な驚きにつながる可能性があることに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加