1

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

4

1 回答 1

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

于 2013-10-31T00:45:28.653 回答