R 按条件合并
我有两个db:R 按条件合并,r,database,for-loop,bioinformatics,R,Database,For Loop,Bioinformatics,我有两个db: dfgenus<- c("Coragyps" ,"Elanus", "Elanus", "Patagioenas", "Crotophaga") 及 使用dplyr的解决方案: library(dplyr) dbgenus<- data.frame(genus = c("Coragyps" ,"Elanus", "Elanus", "Patagioenas", "Crotophaga")) family <-c("Cathartidae", "Accipi
dfgenus<- c("Coragyps" ,"Elanus", "Elanus", "Patagioenas", "Crotophaga")
及
使用dplyr的解决方案:
library(dplyr)
dbgenus<- data.frame(genus = c("Coragyps" ,"Elanus", "Elanus", "Patagioenas", "Crotophaga"))
family <-c("Cathartidae", "Accipitridae","Cuculidae", "Columbidae","Psittacidae")
genus <- c("Coragyps" ,"Elanus", "Crotophaga", "Patagioenas", "Pyrrhura")
sacc<- data.frame(family, genus)
dbgenus %>% left_join(sacc)
库(dplyr)
dbgenus使用dplyr的溶液:
library(dplyr)
dbgenus<- data.frame(genus = c("Coragyps" ,"Elanus", "Elanus", "Patagioenas", "Crotophaga"))
family <-c("Cathartidae", "Accipitridae","Cuculidae", "Columbidae","Psittacidae")
genus <- c("Coragyps" ,"Elanus", "Crotophaga", "Patagioenas", "Pyrrhura")
sacc<- data.frame(family, genus)
dbgenus %>% left_join(sacc)
库(dplyr)
dbgenus有几种方法可以实现您的结果。它们都不应涉及for循环:)
如果将dfgenus
制作为一个数据帧(带有一列),则可以研究merge()
函数,或来自dplyr
包的join函数
但使用现有数据,您可以使用match()
:
newdf有几种方法可以实现您的结果。它们都不应涉及for循环:)
如果将dfgenus
制作为一个数据帧(带有一列),则可以研究merge()
函数,或来自dplyr
包的join函数
但使用现有数据,您可以使用match()
:
<代码> NeDF,但是在创建数据帧(或使用TBBLE)时,请考虑<代码> StrassAsStase= false ,以避免关于因子级别的警告。我建议使用选项设置为false作为默认值。我已经在很长一段时间内一直坚持这一点:但是,在创建数据帧(或使用TIBLE)时,请考虑<代码> StrassAsStase= false ,以避免关于因子级别的警告。我建议使用选项将其设置为false作为默认值。非常感谢,这是我长期以来一直坚持的。
for (i in length(dfgenus)){
if (identical(sacc[i], dfgenus[i])) {
df$family[i] <- sacc$family[i]
} else {
i-1
}
print(df$family)
}
df
family Genus
1 Cathartidae Coragyps
2 Accipitridae Elanus
3 Accipitridae Elanus
4 Columbidae Patagioenas
5 Cuculidae Crotophaga
library(dplyr)
dbgenus<- data.frame(genus = c("Coragyps" ,"Elanus", "Elanus", "Patagioenas", "Crotophaga"))
family <-c("Cathartidae", "Accipitridae","Cuculidae", "Columbidae","Psittacidae")
genus <- c("Coragyps" ,"Elanus", "Crotophaga", "Patagioenas", "Pyrrhura")
sacc<- data.frame(family, genus)
dbgenus %>% left_join(sacc)
newdf <- data.frame(Genus = dfgenus,
Family = sacc[match(dfgenus, sacc$Genus), "family"])
Genus Family
1 Coragyps Cathartidae
2 Elanus Accipitridae
3 Elanus Accipitridae
4 Patagioenas Columbidae
5 Crotophaga Cuculidae