我試圖通過從特定列中具有相同值的每行組中刪除除一行以外的所有行來摺疊數據框。換句話說,每組的第一行。通過選擇每組一行來摺疊數據框
例如,我想這
> d = data.frame(x=c(1,1,2,4),y=c(10,11,12,13),z=c(20,19,18,17))
> d
x y z
1 1 10 20
2 1 11 19
3 2 12 18
4 4 13 17
轉換成這樣:
x y z
1 1 11 19
2 2 12 18
3 4 13 17
我用骨料目前做到這一點,但性能與更多的數據不可接受的:
> d.ordered = d[order(-d$y),]
> aggregate(d.ordered,by=list(key=d.ordered$x),FUN=function(x){x[1]})
我試過split/unsplit與這裏有相同的函數參數,但unsplit抱怨abo請重複行號。
是否有可能?是否有一個R語言將rle的長度向量轉換爲開始每次運行的行的索引,然後我可以使用這些索引將這些行從數據框中提取出來?
我寧願所有列,感謝 – jkebinger 2010-04-13 02:20:11
,那麼你需要簡單地添加一個「處理步驟」打造一個因子變量在其plyr可以循環。它可以用索引命令完成,試試看。順便說一下,你的文本(選擇第一行)和示例(顯示第二行)之間不一致。 – 2010-04-13 02:51:49
順便說一下,r-help和這裏之間的交叉發帖也有些差勁。你在r-help上得到了很好的答案,那你爲什麼不研究它們? – 2010-04-13 02:59:15