私の問題は本当に簡単に見えましたが、簡単な解決策を見つけることができません。データセット内のすべてのカテゴリ変数に「欠落」している値があります。後でmyownの関数で結果を結合するには、この値を一意にする必要があるため、「missing(var_name)」で値「missing」を変更します。
私は最初に次のようなものを試しました:
data %>% mutate(across(where(is.character),
~ replace(., . == "missing", paste("missing", SOMETHING(.)))))
「。」を使用するだけでステートメントSOMETHING
全体の列名にアクセスするこの関数がないため、これは完全には機能しませんacross
。パラメータ..。
私が試した他の解決策は
purrr:imap(data %>% select(where(is.character)),
~ replace(.x, .x == "missing", paste("missing", .y))))
これは私が望むものに近いですがpurrr:imap
、最初の文字列ではなく、最初のデータフレームに出力を簡単かつ計算効率よく再挿入するのに問題があります。
とてもシンプルに見えるものとの戦いに疲れているので、もっとはっきりと見えるように休憩や助けが必要だと思います...
私はむしろdplyr
解決策を使いたいのですが、それpurrr
は大丈夫です。実際、うまく機能するものは何でも(ご存知のとおり、600列以上150,000行あります)
どんな助けやアドバイスも大歓迎です!
ありがとう
データ例
df <- data.frame(var.X = c("a", "missing", "a"),
var.Y = c("b", "b", "missing"),
var.Z = c("missing", "missing", "c"))
# var.X var.Y var.Z
# 1 a b missing
# 2 missing b missing
# 3 a missing c
することでdplyr
、あなたは使用することができますcur_column()
の中でacross()
。差出人?context
:
cur_column()は、現在の列の名前を示します(across()のみ)。
library(dplyr)
df %>%
mutate(across(where(is.character),
~ recode(.x, missing = paste0("missing(", cur_column(), ")"))))
# var.X var.Y var.Z
# 1 a b missing(var.Z)
# 2 missing(var.X) b missing(var.Z)
# 3 a missing(var.Y) c
または
df %>%
mutate(across(where(is.character),
~ recode(.x, missing = sprintf("missing(%s)", cur_column()))))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加