我在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?
答案 0 :(得分:3)
修复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“因子”向量的内部表示是整数,这种混合可能会导致令人不快的意外。