[解決済み] dplyr mutate with conditional values
2022-03-05 14:20:43
質問
4列の大きなデータフレーム("myfile")に、最初の4列を条件として値を持つ5列目を追加する必要があります。
のある回答を優先します。
dplyr
と
mutate
その主な理由は、大規模なデータセットでの高速性である。
私のデータフレームはこのような感じです。
V1 V2 V3 V4
1 1 2 3 5
2 2 4 4 1
3 1 4 1 1
4 4 5 1 3
5 5 5 5 4
...
5列目(V5)の値は、いくつかの条件付きルールに基づくものである。
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
今度は
mutate
関数を使用して、すべての行でこれらのルールを使用します (低速ループを回避するため)。このようなものです(そうです、このように動作しないことは分かっています!)。
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
これが結果になるはずです。
V1 V2 V3 V4 V5
1 1 2 3 5 1
2 2 4 4 1 2
3 1 4 1 1 0
4 4 5 1 3 0
5 5 5 5 4 0
で行う方法
dplyr
?
解決方法は?
これを試してみてください。
myfile %>% mutate(V5 = (V1 == 1 & V2 != 4) + 2 * (V2 == 4 & V3 != 1))
を与える。
V1 V2 V3 V4 V5
1 1 2 3 5 1
2 2 4 4 1 2
3 1 4 1 1 0
4 4 5 1 3 0
5 5 5 5 4 0
またはこれです。
myfile %>% mutate(V5 = ifelse(V1 == 1 & V2 != 4, 1, ifelse(V2 == 4 & V3 != 1, 2, 0)))
を与える。
V1 V2 V3 V4 V5
1 1 2 3 5 1
2 2 4 4 1 2
3 1 4 1 1 0
4 4 5 1 3 0
5 5 5 5 4 0
備考
データフレームにもっと良い名前を付けることをお勧めします。
上記では、この入力を使用しました。
myfile <-
structure(list(V1 = c(1L, 2L, 1L, 4L, 5L), V2 = c(2L, 4L, 4L,
5L, 5L), V3 = c(3L, 4L, 1L, 1L, 5L), V4 = c(5L, 1L, 1L, 3L, 4L
)), .Names = c("V1", "V2", "V3", "V4"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5"))
アップデート1
最初の投稿からdplyrは変更されました
%.%
から
%>%
ということで、回答を修正しました。
アップデート2
dplyrは現在
case_when
これは別の解決策を提供するものです。
myfile %>%
mutate(V5 = case_when(V1 == 1 & V2 != 4 ~ 1,
V2 == 4 & V3 != 1 ~ 2,
TRUE ~ 0))
関連
-
[解決済み】Rで立方根と対数変換をする
-
[解決済み】GLM解析での警告
-
[解決済み】ggplotのエラー。関数型オブジェクトのスケールを自動的に選択する方法がわかりません。
-
[解決済み】R 置換する項目数が置換長の倍数でない/しかし結果は正しい
-
[解決済み】 if/while (条件) {: TRUE/FALSEが必要な場所に値がない場合のエラー
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。
-
[解決済み] dplyrのmutate_at呼び出しで複数列の関数を使用する
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】dplyrパッケージは条件付き変異に使用できますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"置換する項目数が置換長の倍数でない "と表示されるのはなぜですか?
-
[解決済み】R:関数に有限な'ylim'値が必要
-
[解決済み】scale_color_manual()が動作しない件
-
[解決済み】Rで立方根と対数変換をする
-
[解決済み】ggplotのエラー。関数型オブジェクトのスケールを自動的に選択する方法がわかりません。
-
[解決済み】ggplot2でのプロット:「Error: カテゴリ軸のY軸に "Discrete value supplied to continuous scale "と表示される。
-
[解決済み] テスト
-
[解決済み】Rでのデータ操作。'X'はアトミックでなければならない
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】起動時にパーをデフォルト値にリセットする方法