Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按条件合并_R_Database_For Loop_Bioinformatics - Fatal编程技术网

R 按条件合并

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

我有两个db:

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