観測の行番号を参照するにはどうすればよいですか?たとえば、「data」というdata.frame
があり、各観測の行番号に等しい変数data$rownumber
を作成する場合、ループを使用せずにどのように実行しますか?
_data.frame
_を作成すると、これらはデフォルトでrownames
として存在します。
_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
_
rownames
コマンドを使用してそれらにアクセスできます。
_R> rownames(df)
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
_
数値として必要な場合は、as.numeric(rownames(df))
のように_as.numeric
_を追加して数値を強制します。
あなたが探しているものを知っているかのようにそれらを追加する必要はありません(例えば、アイテム_df$c == 'i'
_、whichコマンドを使用できます:
_R> which(df$c =='i')
[1] 9
_
または列がわからない場合
_R> which(df == 'i', arr.ind=T)
row col
[1,] 9 3
_
_df[9, 'c']
_または_df$c[9]
_を使用して要素にアクセスできます。
それらを追加したい場合は、df$rownumber <- as.numeric(rownames(df))
を使用できますが、rownames
に割り当てられている場合があるため、これはdf$rownumber <- 1:nrow(df)
よりも堅牢ではありません。デフォルトのインデックス番号ではなくなりました(rownames
に割り当てた場合でもwhichコマンドはインデックス番号を返し続けます)。
単に:
data$rownumber = 1:nrow(Data)
これはおそらく最も簡単な方法です:
data$rownumber = 1:dim(data)[1]
行インデックスで行を選択する場合は、単純なブラケット表記でこれを実行できることに注意してください。
data[3,]
vs.
data[data$rownumber==3,]
ですから、この新しいコラムが何を達成するのか、私にはよくわかりません。