A: 特定の列で apply() 関数を使用する方法


多くの場合、 apply()関数を使用して、R のデータ フレーム内の特定の列に関数を適用することができます。

ただし、 apply()関数は、関数を適用する前に、まずデータ フレーム内のすべての列に同じオブジェクト タイプを強制するため、意図しない結果が生じる可能性があります。

より良い選択は、次の基本構文を使用する、 lapply()関数です。

 df[c(' col1 ', ' col2 ')] <- lapply(df[c(' col1 ', ' col2 ')], my_function)

この特定の例では、 my_function関数をデータ フレーム内のcol1col2にのみ適用します。

次の例は、この構文を実際に使用する方法を示しています。

例: データ フレーム内の特定の列に関数を適用する

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(19, 22, 15, NA, 14, 25, 25, 25),
                 rebounds=c(10, 6, 3, 7, 11, 13, 9, 12),
                 assists=c(4, 4, 3, 6, 7, 5, 10, 8))

#view data frame
df

  team points rebound assists
1 A 19 10 4
2 A 22 6 4
3 to 15 3 3
4 A NA 7 6
5 B 14 11 7
6 B 25 13 5
7 B 25 9 10
8 B 25 12 8

ここで、値を 2 で乗算し、1 を加算する次の関数を定義するとします。

 #define function
my_function <- function (x) x*2 + 1

次のlagply()関数を使用すると、この関数をデータ フレーム内のポイント列バウンス列にのみ適用できます。

 #apply function to specific columns
df[c(' points ', ' rebounds ')] <- lapply(df[c(' points ', ' rebounds ')], my_function)

#view updated data frame
df

  team points rebound assists
1 A 39 21 4
2 A 45 13 4
3 A 31 7 3
4 A NA 15 6
5 B 29 23 7
6 B 51 27 5
7 B 51 19 10
8 B 51 25 8

結果から、ポイント列リバウンド列の各値を 2 で乗算し、さらに 1 を加算していることがわかります。

また、チームアシストの列が変更されていないことにも注意してください。

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R の apply()、lapply()、sapply()、tapply() のガイド
Rのtransform関数の使い方

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です