我在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)
现在,我想像在R中一样更改列
'a'
的类型并设置其中的级别顺序。可以使用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“因子”向量的内部表示是整数,并且这种混合可能会导致不愉快的意外。