に複数の単語の完全一致に基づいて新しい列を核変換します最初の4つの列の式を評価し、その式が完全に満たされている場合は、各列に基づいて1/0を出力します。私が下にあるコードは、完全な単語(一部のみ)と一致せず、間違ったデータを提供します(下記の結果を参照)。は、私は、データフレームを持つ文字列
df %>%
rowwise() %>%
transmute_at(vars(NP, OM, RSS, suck),
funs(case_when(
grepl(., Dominantspp) ~ "1",
grepl(., Commonspp) ~ "1",
grepl(., Rarespp) ~ "1",
grepl(., Otherspp) ~ "1",
TRUE ~ "0"))) %>%
ungroup()
結果:3行目の「suck」と「RSS」の両方が「1」を受け取ることを確認してください。
# A tibble: 4 x 4
NP OM RSS suck
<chr> <chr> <chr> <chr>
1 0 1 0 1
2 0 1 0 0
3 0 0 1 1
4 1 1 1 1
所望の出力:
NP OM RSS suck
1 0 1 0 1
2 0 1 0 0
3 0 0 1 0
4 1 1 1 0
上記のテストケースに対して期待される正しい結果を提供できますか? –
明らかにするために、4つのうちのいずれか*(Otherspp、Dominantsppなど)がその正規表現と一致するとき、対応する列に0または1を入れたいですか? –
投稿を希望の出力(@StuartAllen)で更新しました。私はその種の「存在」を表すために1を、不在の場合は0を(@David Robinson)欲しい。 – LAB