Rでデータフレームの値を置換する方法(例付き)


次の構文を使用して、R のデータ フレーム内の特定の値を新しい値に置き換えることができます。

 df[df == ' Old Value '] <- ' New value '

次の構文を使用して、データ フレーム内の多くの値の 1 つを新しい値に置き換えることができます。

 df[df == ' Old Value 1 ' | df == ' Old Value 2 '] <- ' New value '

また、次の構文を使用して、データ フレームの特定の列の特定の値を新しい値に置き換えることができます。

 df['column1'][df['column1'] == ' Old Value '] <- ' New value '

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

例 1: データ フレーム全体の特定の値を置換する

次のコードは、データ フレーム全体にわたって特定の値を新しい値に置き換える方法を示しています。

 #create data frame
df <- data. frame (a = as. factor (c(1, 5, 7, 8)),
                 b = c('A', 'B', 'C', 'D'),
                 c = c(14, 14, 19, 22),
                 d = c(3, 7, 14, 11))

#view data frame
df

  abcd
1 1 To 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

#replace '14' with '24' across entire data frame
df[df == 14] <- 24

#view updated data frame
df 

  abcd
1 1 To 24 3
2 5 B 24 7
3 7 C 19 24
4 8 D 22 11

例 2: データ フレーム全体の複数の値の 1 つを置き換えます

次のコードは、データ フレーム全体で複数の値の 1 つを新しい値に置き換える方法を示しています。

 #create data frame
df <- data. frame (a = as. factor (c(1, 5, 7, 8)),
                 b = c('A', 'B', 'C', 'D'),
                 c = c(14, 14, 19, 22),
                 d = c(3, 7, 14, 11))

#view data frame
df

  abcd
1 1 To 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

#replace '14' and '19' with '24' across entire data frame
df[df == 14 | df == 19] <- 24

#view updated data frame
df

  abcd
1 1 To 24 3
2 5 B 24 7
3 7 C 24 24
4 8 D 22 11

例 3: データ フレームの特定の列の値を置き換えます。

次のコードは、データ フレームの特定の列内の特定の値を新しい値に置き換える方法を示しています。

 #create data frame
df <- data. frame (a = as. factor (c(1, 5, 7, 8)),
                 b = c('A', 'B', 'C', 'D'),
                 c = c(14, 14, 19, 22),
                 d = c(3, 7, 14, 11))

#view data frame
df

  abcd
1 1 To 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

#replace '14' in column c with '24'
df['c'][df['c'] == 14] <- 24

#view updated data frame
df 

  abcd
1 1 To 24 3
2 5 B 24 7
3 7 C 19 14
4 8 D 22 11

例 4: データ フレーム内の因子変数の値を置き換える

因子変数の特定の値をオーバーライドしようとすると、次の警告メッセージが表示されます。

 #create data frame
df <- data. frame (a = as. factor (c(1, 5, 7, 8)),
                 b = c('A', 'B', 'C', 'D'),
                 c = c(14, 14, 19, 22),
                 d = c(3, 7, 14, 11))

#attempt to replace '1' with '24' in column a
df['a'][df['a'] == 1] <- 24

Warning message:
In `[<-.factor`(`*tmp*`, thisvar, value = 24):
  invalid factor level, NA generated
     abcd
1 <NA> A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

この警告を回避するには、まず因子変数を数値変数に変換する必要があります。

 #convert column a to numeric
df$a <- as. numeric (as. character (df$a))

#replace '1' with '24' in column a
df['a'][df['a'] == 1] <- 24

#view updated data frame
df

   abcd
1 24 A 14 3
2 5 B 14 7
3 7 C 19 14
4 8 D 22 11

追加リソース

R で NA を文字列に置き換える方法
Rで欠損値をすべて代入する方法

コメントを追加する

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