我有一个看起来像这样的数据:
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(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
合并。
关于r - 如何根据 R 中预先指定的列对数据框进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21751045/