如何使用R找到data.frame中唯一元素的坐标?

时间:2015-01-23 10:22:25

标签: r

我有一个1644948 obs的大型数据框。 5个变量。

数据[,5]有1138个唯一值。我想为数据[,5]中的每个唯一元素找到数据[,3]的第一个值和数据[,4]的最后一个值。

data=    sampleID  chr  start  end     mean
        X536827A01   1 2999931 3000071 -0.015
        X536827A01   1 3018277 3018417 -0.015
        X536827A01   1 3036183 3036323 -0.015
        X536827A01   1 3054557 3054697 -0.015

1 个答案:

答案 0 :(得分:3)

如果订购了开始,结束值,您可以尝试以下代码。 setDT将“data.frame”转换为“data.table”。我们按“mean”和“sampleID”(by=list(mean, sampleID)])分组,最后得到“start”(start[1])的第一个值和“end”(end[.N])的最后一个值。这里,.N给出了每组唯一分组变量的行数。

library(data.table)
setDT(data)[,list(start=start[1], end=end[.N]) , by = list(mean, sampleID)]

或使用unique并将“key”指定为“mean”和“sampleID”列。创建一个“结束”列作为每组分组变量的“结束”的最后一个值。

 unique(setDT(data)[, end:=end[.N], key=.(mean, sampleID)])

如果没有订购,正如@Roland在评论中提到的那样

 setDT(data)[,list(start= min(start), end=max(end)) , 
                                  by = list(mean, sampleID)]