我需要从Python运行健壮的方差分析。我想使用的函数是R包WRS2中的t2way
。我尝试使用r2py,但遇到了一个错误:
>>> import rpy2.robjects.packages as rpackages
>>> from rpy2.robjects import pandas2ri
>>> pandas2ri.activate()
>>> df = pd.read_csv("https://github.com/lawrence009/dsur/raw/master/data/goggles.csv")
>>> rdf = pandas2ri.py2rpy(df)
>>> WRS2 = rpackages.importr('WRS2')
>>> WRS2.t2way("attractiveness ~ gender*alcohol", data = rdf)
RRuntimeError: Error in x[[grp[i]]] :
attempt to select less than one element in get1index
我正在寻找一种使用rpy2实现这一点的方法,或者(甚至更好)将WRS2移植到python环境。任何帮助都将不胜感激
这是我对这个问题的具体解决办法。从一开始,R中的第一个问题是,当您导入数据帧时,您必须更改列的类型酒精和性别作为.factor
在R中,脚本将是:
虽然在python中,我没有找到更改列的数据类型的方法,但我提供了以下解决方案: 首先,您必须创建一个名为my_t2way.R的.R文件,该文件包含:
然后可以从python运行以下命令
当然,这个解决方案只适用于这种特殊情况,但我认为它可以很容易地扩展到其他数据帧
如果问题在于dataframe中的列不是因子(如其他答案中所建议的),则将它们转换为因子非常容易:
为了安全起见,建议创建一个R公式对象。一些R函数将接受字符串并假定它们是公式,但这取决于包作者,并非总是如此
相关问题 更多 >
编程相关推荐