0
#working example
col1 <- c("cat", "cats", "cat2", "dog", "carrot", "carrots", "broccoli",
"squash", "tundra", "grassland", "grasslands")
df <- as.data.frame(col1)
文字列が動物、野菜、またはバイオームであるかどうかを識別する新しい列を作成したいとします。他の文字列でネストされたifelseステートメントでgreplを使用する
所望の出力:
col1 col2
1 cat animal
2 cats animal
3 cat2 animal
4 dog animal
5 carrot vegetable
6 carrots vegetable
7 broccoli vegetable
8 squash vegetable
9 tundra biome
10 grassland biome
11 grasslands biome
私は、次のコードのgrepl
部分が動作しない理由を理解したいと思います。
df_new <- df %>% mutate(col2 = ifelse(col1 %in% c("dog", grepl("cat", col1)), "animal",
ifelse(col1 %in% c(grepl("carrot", col1), "broccoli", "squash"), "vegetable",
ifelse(col1 %in% c("tundra", grepl("grassland", col1)), "biome", NA))))
それは 'case_when'使用する方が簡単です:' DF%>%に変異(COL2 = case_when(grepl( '猫|犬' を、 col1)〜 'animal'、grepl( 'ニンジン|ブロッコリー|スカッシュ'、col1)〜 '野菜'、grepl( 'tundra | grassland'、col1)〜 'biome')) 'またはルックアップテーブル – alistaire