1. ホーム
  2. r

[解決済み] Rの行番号の参照

2022-03-10 20:38:29

質問

あるオブザベーションの行番号を参照するにはどうしたらよいですか?例えば data.frame という名前の変数を作成します。 data$rownumber 各オブザベーションの行番号と等しくなるように、ループを使用せずにどのように行いますか?

どのように解決するのですか?

これらはデフォルトで rownames を作成すると 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

でアクセスすることができます。 rownames コマンドを使用します。

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

を追加して、数値に変換します。 as.numeric というように as.numeric(rownames(df)) .

何を探しているのかがわかっていれば、追加する必要はありません(例えば項目 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)) よりも堅牢性に欠けるかもしれませんが df$rownumber <- 1:nrow(df) に代入している場合があるからです。 rownames に割り当てても、which コマンドはインデックス番号を返し続けます)。 rownames ).