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のドキュメント

コメントを残す 0

Your email address will not be published. Required fields are marked *