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?

È stato utile?

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
scroll top