[英]How to replace values of a character column based on the occurrence of specific strings in another column of an R data frame?
我正在努力替换数据框特定行的字符串。
在这个例子中, class1
列有错误,因此我需要更改两个物种类。
这是我的代码:
class1 <- c("Sarcopterygii", "Actinopterygii", "Actinopterygii",
"Actinopterygii", "Actinopterygii", "Actinopterygii",
"Actinopterygii", "Insecta", "Insecta")
Species1 <-c("Protopterus aethiopicus","Synodontis ruandae",
"Synodontis afrofischeri", "Hyperolius cinnamomeoventris",
"Schilbe intermedius", "Hoplobatrachus occipitalis",
"Raiamas salmolucius","Trithemis pluvialis","Trithemis donaldsoni")
count1 <- c(12, 2, 32, 4, 6, 7, 8, 13, 10)
Dataset1 <- data.frame(class1, Species1, count1)
我想将"Actinopterygii"
属替换为"Hyperolius cinnamomeoventris"
物种的"Amphibia"
,并对"Hoplobatrachus occipitalis"
物种进行同样的操作
我不确定是否理解您的目标,但这是dplyr::case_when
的主要思想
library(dplyr)
Dataset1 %>%
mutate(class1 = case_when(class1 == "Actinopterygii" ~ "Hyperolius cinnamomeoventris", TRUE ~ class1))
试试这个:
Dataset1[Dataset1$class1 == "Actinopterygii" & Species1 == "Hyperolius cinnamomeoventris", "Species1"] <- "Amphibia"
Dataset1[Dataset1$class1 == "Actinopterygii" & Species1 == "Hoplobatrachus occipitalis", "Species1"] <- "Amphibia"
Dataset2 = Dataset1 %>% group_by(class1, Species1) %>% summarise(count1 = sum(count1))
听起来您只是想更改两个特定值? 如果是这样,我将只使用基本 R 子集:
## Find the species for which the class needs replacing:
rows_to_fix <- Dataset1[["Species1"]] %in% c("Hyperolius cinnamomeoventris", "Hoplobatrachus occipitalis")
## At those elements, replace Class1 with "amphibia"
Dataset1[["Class1"]][rows_to_fix] <- "amphibia"
这种方法的一个优点是它可以更清楚地表明您只是在调整几个特定的错误,而不是针对一组规则进行概括
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.