Frage

Angenommen, Sie haben einen Vektor wie folgt:

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

Wie kann es am besten zu einem data.frame wie folgt reduziert werden?

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

In einer prozeduralen Sprache könnte ich nur Iterierte durch eine Schleife und bauen die data.frame wie ich gehen, aber mit einer großen Datenmenge in R ein solcher Ansatz ist ineffizient. Jede Beratung?

War es hilfreich?

Lösung

oder einfach

data.frame(rle(v)[])

Andere Tipps

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

sollten Sie bekommen, was Sie brauchen.

values lengths
     1       3
     2       4
     1       2
     3       4
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top