例如,我有一個df如下所示,我想創建一個包含特定內容的新列string
df <- data.frame(name1 = c("Amydrium sp. 01", "Aporosa sp.", "Arecaceae sp. 02","Adenia macrophylla"))
name1
1 Amydrium sp. 01
2 Aporosa sp.
3 Arecaceae sp. 02
4 Adenia macrophylla
我想有 2 個額外的列稱為family和genus
我可以family通過檢測ceae字串(即df %>% mutate(family = case_when(str_detect(name1, "ceae") ~ name1)).
對于genus列,我可以得到一個語法為 detect sp.exclude ceae,并且不想使用多個具有全名的單元格,即Adenia macrophyll同時獲取列嗎?。
- 所需的輸出
name1 family genus
1 Amydrium sp. 01 NA Amydrium sp. 01
2 Aporosa sp. NA Aporosa sp.
3 Arecaceae sp. 02 Arecaceae sp. 02 NA
4 Adenia macrophylla NA NA
uj5u.com熱心網友回復:
做相反的事情并尋找sp.:
df %>%
mutate(
family = case_when(str_detect(name1, "ceae") ~ name1),
genus = case_when((!str_detect(name1, "ceae") & str_detect(name1, "sp.")) ~ name1)
)
輸出:
name1 family genus
1 Amydrium sp. 01 <NA> Amydrium sp. 01
2 Aporosa sp. <NA> Aporosa sp.
3 Arecaceae sp. 02 Arecaceae sp. 02 <NA>
4 Adenia macrophylla <NA> <NA>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317713.html
下一篇:為什么elseif陳述句失敗?
