Come faccio a riferimento il numero di riga di un'osservazione? Ad esempio, se hai un data.frame
chiamato "dati" e vuoi creare una variabile data$rownumber
uguale al numero di riga di ogni osservazione, come faresti senza usare un ciclo?Referencing numero di riga R
risposta
queste sono presenti di default come rownames
quando si crea un data.frame
.
R> df = data.frame('a' = rnorm(10), 'b' = runif(10), 'c' = letters[1:10])
R> df
a b c
1 0.3336944 0.39746731 a
2 -0.2334404 0.12242856 b
3 1.4886706 0.07984085 c
4 -1.4853724 0.83163342 d
5 0.7291344 0.10981827 e
6 0.1786753 0.47401690 f
7 -0.9173701 0.73992239 g
8 0.7805941 0.91925413 h
9 0.2469860 0.87979229 i
10 1.2810961 0.53289335 j
e li si può accedere tramite il comando rownames
.
R> rownames(df)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
se avete bisogno di loro come i numeri, semplicemente costringere a numerico con l'aggiunta di as.numeric
, come in as.numeric(rownames(df))
.
Non è necessario aggiungere, come se si sa cosa si sta cercando (diciamo oggetto df$c == 'i'
, è possibile utilizzare il comando which:
R> which(df$c =='i')
[1] 9
o se non si conosce la colonna
R> which(df == 'i', arr.ind=T)
row col
[1,] 9 3
si può accedere all'elemento utilizzando df[9, 'c']
, o df$c[9]
.
Se si vuole aggiungere li si potrebbe usare 012.319., anche se questo può essere meno robusto di df$rownumber <- 1:nrow(df)
in quanto vi sono casi in cui potrebbe essere assegnato a rownames
in modo che non siano più i numeri di indice predefiniti (il cui comando continuerà a restituire i numeri di indice anche se si assegna a rownames
).
Questo è probabilmente il modo più semplice:
data$rownumber = 1:dim(data)[1]
E 'probabilmente la pena notare che, se si desidera selezionare una riga dal suo indice di riga, si può fare questo con la notazione semplice staffa
data[3,]
vs.
data[data$rownumber==3,]
Quindi non sono davvero sicuro di cosa questa nuova colonna compia.
Semplicemente:
data$rownumber = 1:nrow(Data)
Non riesco a pensare a un momento in cui sarebbe comunque utile. Soprattutto data la funzione 'which' –
È utile se hai bisogno di un indice di ordinamento. – Roland
Questo ha senso. –
È possibile utilizzare 'nrow (data)' invece di 'dim (data) [1]'. –
I nomi dei personaggi sono caratteri non numerici. Ciò potrebbe portare a confusione. – Roland
@Roland Buon punto, la rimozione di questa soluzione alternativa. –