【问题标题】:Change a dataframe column type from integer to a factor将数据框列类型从整数更改为因子
【发布时间】:2013-11-09 23:25:07
【问题描述】:

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

【问题讨论】:

    标签: python r dataframe rpy2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 2012-01-25
      • 2015-08-02
      相关资源
      最近更新 更多