如何不使用索引e[7, ]打印data.frame中Montreal对应的整行数据?
问题:按列值筛选数据框整行(不使用固定索引)
给定如下R数据框:
e=data.frame(Equipe = c("Washington","Dallas","Chicago","Los Angeles", "St-Louis", "Detroit", "Montréal", "Boston"), MJ = c(55,56,57,58,56,57,56,57), V = c(36,32,30,30,25,25,22,24), D = c(16,19,21,22,19,21,27,31), DP = c(3,5,6,6,12,11,7,2), PTS = c(75,69,66,66,62,61,51,50))
要求不使用e[7, ]这类固定位置索引的方式,打印出Equipe列中值为Montréal的整行数据。
解决方法
方法1:基础R逻辑索引
直接通过列值的逻辑条件筛选,完全不依赖行的固定位置:
e[e$Equipe == "Montréal", ]
运行输出:
Equipe MJ V D DP PTS 7 Montréal 56 22 27 7 51
方法2:使用基础R的subset()函数
subset()函数专门用于按条件筛选数据框,语法更直观:
subset(e, Equipe == "Montréal")
输出结果与方法1一致。
方法3:tidyverse风格(dplyr包)
如果常用tidyverse工具链,可使用dplyr::filter()函数:
# 先安装并加载dplyr(首次使用需安装) install.packages("dplyr") library(dplyr) # 筛选目标行 filter(e, Equipe == "Montréal")
同样会输出目标行数据。
注意:匹配字符串时要严格一致,原数据中是
Montréal(带重音符号é),若写成Montreal会无法匹配到目标行。
内容的提问来源于stack exchange,提问作者nour el'houda ziane
相关产品推荐
相关产品推荐

