24

オブザベーションの行番号を参照するにはどうすればよいですか? たとえば、data.frame呼び出された「データ」がありdata$rownumber、各観測の行番号に等しい変数を作成したい場合、ループを使用せずにどのようにそれを行うでしょうか?

4

4 に答える 4

28

これらはrownamesdata.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

コマンドを使用してアクセスできますrownames

R> rownames(df)
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

as.numeric数値として必要な場合は、 のようにを追加して、単純に数値に強制しますas.numeric(rownames(df))

探しているものを知っているかのように、それらを追加する必要はありません (たとえば item 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))よりも堅牢性が低くなる可能性があるため、デフォルトのインデックス番号ではなくなります ( which コマンドは引き続きインデックス番号を返しますに割り当てます)。df$rownumber <- 1:nrow(df)rownamesrownames

于 2013-07-18T20:17:13.140 に答える
3

これはおそらく最も簡単な方法です:

data$rownumber = 1:dim(data)[1]

行インデックスで行を選択したい場合は、単純なブラケット表記でこれを行うことができることに注意してください。

data[3,]

vs.

data[data$rownumber==3,]

したがって、この新しいコラムが何を達成するのかはよくわかりません。

于 2013-07-18T19:58:01.940 に答える