将250,000行转换为R中的列

时间:2011-05-28 17:11:08

标签: r

我总是在R中使用t(文件)命令进行转置。 但是我在大数据文件(250,000行和200列)上运行不正常(根本没有运行)。任何想法。

我需要计算第二行(PTBP1)与所有其他行(包括标题在内的8行除外)之间的相关性。为此,我将行转换为列,然后使用cor函数。

但是我对transpose fn感到震惊。任何帮助都会非常感激!

我从stackoverflow中的一个帖子复制了一个例子(他们也几乎讨论了同样的问题,但似乎还没有答案!)

ID A B C D E F G H I [200 columns]
Row0$-1 0.08 0.47 0.94 0.33 0.08 0.93 0.72 0.51 0.55
Row02$1 0.37 0.87 0.72 0.96 0.20 0.55 0.35 0.73 0.44
Row03$ 0.19 0.71 0.52 0.73 0.03 0.18 0.13 0.13 0.30
Row04$- 0.08 0.77 0.89 0.12 0.39 0.18 0.74 0.61 0.57
Row05$- 0.09 0.60 0.73 0.65 0.43 0.21 0.27 0.52 0.60
Row06-$ 0.60 0.54 0.70 0.56 0.49 0.94 0.23 0.80 0.63
Row07$- 0.02 0.33 0.05 0.90 0.48 0.47 0.51 0.36 0.26
Row08$_ 0.34 0.96 0.37 0.06 0.20 0.14 0.84 0.28 0.47
........
250,000 rows

2 个答案:

答案 0 :(得分:2)

使用矩阵代替。数据帧相对于矩阵的唯一优势是在列中具有不同类的能力,并且您显然没有这种情况,因为转置的数据帧不能支持这样的结果。

答案 1 :(得分:0)

我不明白为什么要转置data.frame。如果您只使用cor,那么您的数据是否在行或列中无关紧要 实际上,如果您的数据符合SPSS的经典行列模式而其他程序需要数据,则R的主要优点之一就是它的重要性。

有很多方法可以将第一行与所有其他行相关联(我不知道要排除哪些行)。一个是使用循环(这里循环隐含在对* apply系列函数之一的调用中):

lapply(2:(dim(fn)[1]), function(x) cor(fn[1,],fn[x,]))

请注意,我希望你将data.frame命名为fn。要跳过某些行,请将2更改为所需的数字。此外,我可能会在这里使用vapply

我希望这个答案指出你正确的方向,即如果你绝对不需要它,就不要使用t()