这个问题有多个步骤,所以请耐心等待。
前提 我创建的脚本重新编码了一个包含 43000 列的电子表格,每列都是一个包含 177 个观察值的唯一变量。观察结果都是不同的,都是十进制数。
然后将每个单独的变量重新编码为两组;基于截止点。这个截止点是根据我之前编写的脚本生成的。每个变量/列都有一个截止点 - 因此截止点是唯一的,并且来自 43000 个截止数字的列表。基于此,列中的数字随后被重新编码为两组;1 或 0 - 取决于它们是 > 还是 <。请参见下面的示例:
到目前为止,我的做法是使用 R plyr 包,例如:
Genedata$SPOCK1.202363_at_recode[Genedata$SPOCK1.202363_at<= 8.2244399999999995] <- "0"
Genedata$SPOCK1.202363_at_recode[Genedata$SPOCK1.202363_at> 8.2244399999999995] <- "1"
Genedata_Recoded$SPOCK1.202363_at_recode <- factor(Genedata$SPOCK1.202363_at_recode)
在这种情况下,变量是 :SPOCK1.202363_at
并且截止值是 8.2244399999999995
但是,鉴于变量名称和截止值都随每个单独的变量而变化,我不知道如何apply
在 R 中使用该函数。
因此,我目前正在使用 PyPer 一个可以调用 R 函数的 Python 模块。使用占位符%s
,我迭代地替换每个变量名和截止值。
问题
1) 目前打开 CSV 文件需要很长时间 --> 我认为保存为二进制文件或矩阵会加快速度。然而,这不是优先事项。
2)迭代;有没有办法通过使用 plyr 包的 recode 函数来使用具有两个变化变量的 apply 函数。
3)当前迭代所用的时间似乎随变量非线性增加。对于 1000 个变量,大约需要 30 秒,但对于 43000 个变量,它似乎变慢了。我不知道这是什么原因。也许是一个解释?
4)有没有办法使用多处理包轻松并行化迭代任务,从而进一步提高速度
更新:针对为什么“0”和“1”,数字或非数字无关紧要。我就是这么选的。最终,我分析的下一部分采用两组,无论是否为数字并处理它。
更新 2:改写前提更清楚