将数据框列类型从整数更改为因子

时间:2013-10-30 11:47:56

标签: python r dataframe rpy2

我在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?

1 个答案:

答案 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“因子”向量的内部表示是整数,这种混合可能会导致令人不快的意外。