Rプログラミングのwhich()関数
Rのwhich()関数は、与えられた条件を満たす値の位置またはインデックスを返します。RのWhich()関数は、論理ベクトル内の値の位置を返します。位置は、行、列、ベクトルなど、あらゆるものに関して示すことができます。
Rのwhich()関数の文法
which(ウィッチ)関数:Rのwhich関数は、論理ベクトル内の値の位置を返します。
which(x,arr.ind = F,useNames = F)
どこ
- X = An input logical vector.
- Arr.ind = Returns the array indices if x is an array.
- useNames = Indicates the dimension names of an array.
which()関数の簡単な例
では、関数の定義とその動作について理解しましたね。さあ、学んだことを実際に適用してみましょう。
それがどのように機能するか見てみましょう。 (Sore ga dono yō ni kinō suru ka mite mimashō.)
which(letters=="p")
十六
which(letters=="n")
14
which(letters=="l")
12
「letters」というのは、英語のアルファベット全26文字が順番に並んだ組み込み定数です。
上記で表示される出力は、データフレーム内の各文字の位置を示しています。見ていただける通り、アルファベットの「p」は16番目であり、「l」と「n」はそれぞれ14番目と12番目です。
今度はwhich関数の使い方について学びましょう。
ベクトルを使用してwhich()関数を使う。
今、R言語でベクトルを作成し、その後which関数を使用して位置を追跡しましょう。
#creating a vector
df<- c(5,4,3,2,1)
#Postion of 5
which(df==5)
私の名前はトムです。
#Position of 1
which(df==1)
5つ
#Position of values greater than 2
which(df>2)
1、2、3を日本語で自然に言い換えてください。ただし、1つのオプションだけで構いません。
素晴らしい!Rのwhich()は、指定された入力の値の位置を返します。また、この関数を使用して特定の条件を渡し、条件に一致する出力の位置を取得することもできます。先の例で見たように、条件に一致する出力の位置を取得することができます。
データフレームにwhich()関数を使用すること
さて、R言語においてデータフレームにwhich関数をどのように適用するかを見てみましょう。
df<-datasets::BOD
df
Time demand
1 1 8.3
2 2 10.3
3 3 19.0
4 4 16.0
5 5 15.6
6 7 19.8
この目的のために、私たちはBODデータセットを使用しています。このデータセットには「Time」と「Demand」という2つの列が含まれています。これは別の組み込みデータセットです。
「which」関数を使用して、データ内の値の位置を見つける試みをしましょう。
which(df$demand=='10.3')
2
which()関数には値のリストを入力することもできます。以下の例を見てください。データフレームから2つの値の位置を見つけようとしています。
which(df$demand==c(8.3,16.0))
1 4
which()を使って数値の値を含むデータフレームの列を見つける。
数値データを含むデータ内の列名を見つけるために、which() 関数を使用することもできます。
R言語での動作を見てみましょう。そのために、私たちは「Iris」データセットを使用しています。
df<-datasets::iris
df
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
11 5.4 3.7 1.5 0.2 setosa
test<-which(sapply(df,is.numeric))
colnames(df)[test]
"Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
出力によると、アヤメのデータセットには5つの列があります。そのうち4つは数値列であり、1つはカテゴリー(種)です。
ここでは、which() メソッドとともに R の sapply 関数を使用しました。
which()関数は、入力条件に基づいて数値の列の名前のみを返しました。もしデータアナリストであれば、which()関数は非常に有用です。
Rでの行列の機能は何ですか? (R de no gyōretsu no kinō wa nan desu ka?)
ついに、Rの行列に到着しました。R言語では、which()関数を使用して行列内の値の位置を取得することができます。また、このセクションではarr.indexパラメーターについても学びます。
まず第一に、マトリックスを作成してください。
df<-matrix(rep(c(1,0,1),4),nrow = 4)
df
[,1] [,2] [,3]
[1,] 1 0 1
[2,] 0 1 1
[3,] 1 1 0
[4,] 1 0 1
すごい!きれいな行列を作成したね。おめでとう。それでは、which() を使って行列内の値 ‘0’ の位置を取得しましょう。
which(df==0,arr.ind = T)
row col
[1,] 2 1
[2,] 1 2
[3,] 4 2
[4,] 3 3
うーん、どの関数が行列内の値「0」の位置を返してくれたかな。
最初の「0」の出現は、2行目の1列目です。次に現れるのは、1行目の2列目です。その後、4行目の2列目、最後には3行目の3列目に現れます。
結論
R言語のwhich()関数は、データ分析やデータマイニングで最も広く使用されている関数の一つです。
関数はデータ内の値の位置を示します。大量のデータを扱っている場合は、特定の値の位置を見つけるのが難しいでしょうが、そこでRの which() 関数が役立ちます。
今は以上です。素晴らしいポジショニングをお楽しみください!(Ima wa ijō desu. Subarashī pojishoningu o o-tanoshimi kudasai!)
もっと読む: Rのドキュメント