[解決済み] dplyrのmutate_at呼び出しで複数列の関数を使用する
質問
dplyrの
mutate_at
関数が直接適用される列とデータフレーム内の別の列を入力する場合、データフレーム内の複数の列に関数を適用することができます。
具体的な例として、次のようなデータフレームを変異させたいと思います。
# Example input dataframe
df <- data.frame(
x = c(TRUE, TRUE, FALSE),
y = c("Hello", "Hola", "Ciao"),
z = c("World", "ao", "HaOlam")
)
を持つ
mutate_at
の呼び出しは、次のようなものです。
df %>%
mutate_at(.vars = vars(y, z),
.funs = ifelse(x, ., NA))
を実行すると、次のようなデータフレームが返されます。
# Desired output dataframe
df2 <- data.frame(x = c(TRUE, TRUE, FALSE),
y_1 = c("Hello", "Hola", NA),
z_1 = c("World", "ao", NA))
希望する
mutate_at
の呼び出しは、次のようなものになるでしょう。
mutate
:
df %>%
mutate(y_1 = ifelse(x, y, NA),
z_1 = ifelse(x, z, NA))
これは、ベースRでいくつかの方法でできることは知っていますが、特にdplyrの
mutate_at
関数は、読みやすさやデータベースとの連動性などの観点から
以下は、stackoverflowに寄せられた同様の質問です。 しない 私がここで投げかけた質問を扱っています。
dplyr の mutate() 関数を使用した sum() 関数内の列の使用
どのように解決するのですか?
これは、@eipi10さんの質問コメントで回答されていますが、後学のためにここに書いておきます。
ここでの解決策は、「使用すること」です。
df %>%
mutate_at(.vars = vars(y, z),
.funs = list(~ ifelse(x, ., NA)))
また、新しい
across()
関数に
mutate()
というように
df %>%
mutate(across(c(y, z), ~ ifelse(x, ., NA)))
数式演算子の使用(例えば
~ ifelse(...)
ということを表しています。
ifelse(x, ., NA)
への呼び出しの中で定義されている無名関数です。
mutate_at()
.
の呼び出しの外側で関数を定義するのと同じように機能します。
mutate_at()
というように。
temp_fn <- function(input) ifelse(test = df[["x"]],
yes = input,
no = NA)
df %>%
mutate_at(.vars = vars(y, z),
.funs = temp_fn)
dplyrの構文変更に関する注意事項。
dplyrのバージョン0.8.0以前は、単純に以下のように記述していました。
.funs = funs(ifelse(x, . , NA))
が、その
funs()
関数は非推奨で、まもなくdplyrから削除される予定です。
関連
-
[解決済み】"置換する項目数が置換長の倍数でない "と表示されるのはなぜですか?
-
[解決済み】R:関数に有限な'ylim'値が必要
-
[解決済み】基本 - T-検定 -> グループ化因子は正確に2水準でなければならない
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み】Rで「パッケージ'FILE_PATH'のインストールで終了ステータスが0でなかった」。
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み] テスト
-
[解決済み】randomForestの実行予測で「NA/NaN/Inf in foreign function call (arg 7)」をなくすには?
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]
最新
-
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: 複数行の ggplot2 コマンドで「単項演算子エラー」が発生する。
-
[解決済み] Stataバージョン5-12の.dtaファイルではない
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み】GLM解析での警告
-
[解決済み】Rエラー。"新しい列は既存の列の後に穴を空ける"
-
[解決済み】 lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) のエラー : 'y' の NA/NaN/Inf, あらゆる方法を試したが解決しなかった。
-
[解決済み] 因子を日付形式に変換するにはどうすればいいですか?
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。
-
[解決済み】randomForestの実行予測で「NA/NaN/Inf in foreign function call (arg 7)」をなくすには?
-
[解決済み】forループを実行すると「要因のレベルセットが異なる」というエラーが発生する