R中

2010-06-09 31 views
3

序列縮減假設你有一個像這樣的載體:R中

v <- c(1,1,1,2,2,2,2,1,1,3,3,3,3) 

怎樣纔可以最好減少到這樣的data.frame?

v.df <- data.frame(value=c(1,2,1,3),repetitions=c(3,4,2,4)) 

在程序語言,我可能只是通過一個循環迭代並建立data.frame,因爲我去,但R中的大型數據集這樣的做法是低效的。有什麼建議?

回答

11

或者更簡單地說

data.frame(rle(v)[]) 
+0

這很好,甚至更簡潔。 – Greg 2010-06-10 00:48:03

+0

另一種方式'data.frame(unclass(rle(v)))'或'as.data.frame.list(rle(v))' – Marek 2010-06-10 07:56:58

8
with(rle(v), data.frame(values, lengths)) 

應該給你你需要的東西。

values lengths 
    1  3 
    2  4 
    1  2 
    3  4 
+0

這正是我想的功能;我只記得我的生活的名字!非常感謝。 – russellpierce 2010-06-10 00:42:26