Wie referenziere ich die Zeilennummer einer Beobachtung? Wenn Sie zum Beispiel eine data.frame
namens "data" haben und eine Variable data$rownumber
erstellen möchten, die der Zeilennummer jeder Beobachtung entspricht, wie würden Sie das tun, ohne eine Schleife zu verwenden?Referenznummer in R
Antwort
Diese sind standardmäßig vorhanden wie rownames
, wenn Sie eine data.frame
erstellen.
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
und Sie können sie über den rownames
Befehl zugreifen.
R> rownames(df)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
wenn Sie sie benötigen als Zahlen, einfach zu numerischen coerce durch as.numeric
Zugabe, wie in as.numeric(rownames(df))
.
Sie müssen sie nicht hinzufügen, als ob Sie wissen, was Sie suchen, (sagen Artikel df$c == 'i'
, können Sie die, die Befehl:
R> which(df$c =='i')
[1] 9
oder wenn Sie nicht wissen, die Spalte
R> which(df == 'i', arr.ind=T)
row col
[1,] 9 3
können Sie das Element zugreifen df[9, 'c']
verwenden oder df$c[9]
.
Wenn Sie sie hinzufügen wollten könnten Sie 012.319.227 verwenden, obwohl dies weniger robust sein kann als df$rownumber <- 1:nrow(df)
, da es Fälle gibt, in denen Sie möglicherweise rownames
zugewiesen haben, so dass sie nicht mehr die Standardindexnummern sind (der Befehl gibt weiterhin Indexnummern zurück, selbst wenn Sie rownames
zuweisen).
Dies ist wahrscheinlich der einfachste Weg:
data$rownumber = 1:dim(data)[1]
Es wahrscheinlich, dass erwähnenswert ist, wenn Sie eine Reihe von ihrer Zeilenindex auswählen möchten, können Sie dies mit einer einfachen Klammer-Notation
tun könnendata[3,]
vs.
data[data$rownumber==3,]
Ich bin mir also nicht wirklich sicher, was diese neue Kolumne leistet.
einfach:
data$rownumber = 1:nrow(Data)
Ich kann mir keine Zeit vorstellen, in der das nützlich wäre. Vor allem mit der Funktion 'which' –
Es ist nützlich, wenn Sie einen Sortierindex benötigen. – Roland
Das macht Sinn. –
Sie können 'nrow (data)' anstelle von 'dim (data) [1]' verwenden. –
rownames sind Zeichen nicht numerisch. Das könnte zu Verwirrung führen. – Roland
@Roland Guter Punkt, diese alternative Lösung entfernend. –