在R语言DataFrame中统计两列属名匹配与不匹配的次数
解决R语言DataFrame属名匹配统计问题
方法一:Base R 简洁实现
直接用字符串处理函数提取属名,再通过table()统计匹配结果:
# 提取Prediction (Sp)列的首个单词(属名) df$sp_genus <- sub(" .*", "", df$`Prediction (Sp)`) # 统计匹配/不匹配的行数 match_stats <- table(df$`Prediction (Ge)` == df$sp_genus) print(match_stats)
sub(" .*", "", x)会替换掉第一个空格及之后的所有内容,直接得到首个单词table()自动统计逻辑向量中TRUE(匹配)和FALSE(不匹配)的数量
方法二:Tidyverse 管道式实现
如果习惯用tidyverse生态,用dplyr+stringr的组合更流畅:
library(dplyr) library(stringr) match_stats <- df %>% mutate(sp_genus = str_extract(`Prediction (Sp)`, "^\\w+"), is_match = `Prediction (Ge)` == sp_genus) %>% count(is_match) print(match_stats)
str_extract(Prediction (Sp), "^\\w+")提取字符串开头的单词字符,即属名count(is_match)直接统计匹配和不匹配的行数
内容的提问来源于stack exchange,提问作者antecessor
相关产品推荐
相关产品推荐

