riduzione sequenza in R
Domanda
Si supponga di avere un vettore in questo modo:
v <- c(1,1,1,2,2,2,2,1,1,3,3,3,3)
Come può essere meglio ridotto ad un data.frame come questo?
v.df <- data.frame(value=c(1,2,1,3),repetitions=c(3,4,2,4))
In un linguaggio procedurale potrei semplicemente scorrere un ciclo e costruire la data.frame come vado, ma con un grande insieme di dati in R tale approccio è inefficiente. Qualche consiglio?
Soluzione
o più semplicemente
data.frame(rle(v)[])
Altri suggerimenti
with(rle(v), data.frame(values, lengths))
dovrebbe ottenere quello che ti serve.
values lengths
1 3
2 4
1 2
3 4
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow