序列縮減假設你有一個像這樣的載體: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中的大型數據集這樣的做法是低效的。有什麼建議?
序列縮減假設你有一個像這樣的載體: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中的大型數據集這樣的做法是低效的。有什麼建議?
或者更簡單地說
data.frame(rle(v)[])
with(rle(v), data.frame(values, lengths))
應該給你你需要的東西。
values lengths
1 3
2 4
1 2
3 4
這正是我想的功能;我只記得我的生活的名字!非常感謝。 – russellpierce 2010-06-10 00:42:26
這很好,甚至更簡潔。 – Greg 2010-06-10 00:48:03
另一種方式'data.frame(unclass(rle(v)))'或'as.data.frame.list(rle(v))' – Marek 2010-06-10 07:56:58