我有一个看起来像这样的数据:

 library(zoo)
 dt <- read.csv("http://dpaste.com/1612639/plain/",header=FALSE,fill=FALSE,na.strings = "")
 dt <- na.locf(dt)


> dt
   V1  V2                V3                V4       V5
1 FOO yyy Unigene126925_All Unigene137063_All 0.238087
2 FOO yyy Unigene126925_All  Unigene24551_All 0.374231
3 FOO yyy Unigene126925_All  Unigene31835_All 0.367897
4 BAR xxx Unigene126925_All Unigene165366_All 0.247844
5 BAR xxx Unigene126925_All Unigene111784_All 0.344493


我要做的是基于V1将它们分组,每组的内容是一个数据帧,其值从上述的V3到V5。
看起来像这样:

组FOO

     V1               V2                V3
1 Unigene126925_All Unigene137063_All 0.238087
2 Unigene126925_All  Unigene24551_All 0.374231
3 Unigene126925_All  Unigene31835_All 0.367897


组栏

   V1               V2                V3
1 Unigene126925_All Unigene165366_All 0.247844
2 Unigene126925_All Unigene111784_All 0.344493


如何在R中实现呢?
稍后,对于每个组,我将一些功能应用于其数据帧。

最佳答案

使用split

> split(dt[, 3:5], dt$V1)
$BAR
                 V3                V4       V5
4 Unigene126925_All Unigene165366_All 0.247844
5 Unigene126925_All Unigene111784_All 0.344493

$FOO
                 V3                V4       V5
1 Unigene126925_All Unigene137063_All 0.238087
2 Unigene126925_All  Unigene24551_All 0.374231
3 Unigene126925_All  Unigene31835_All 0.367897


现在,您可以在此列表上运行某些功能,并将结果与​​unsplit合并在一起。

09-04 21:33
查看更多