如何使用select函数选取数据集除指定行外的所有行?
关于排除数据集某一行的正确方法
首先明确:select()是用来选择列的函数,没法用它筛选行,你想用select实现排除某一行的思路从根上就错了。
你提到的autompg$nrow!=name完全不可行,nrow()是获取数据集行数的函数,不是数据列,而且这个写法的语法逻辑都不对。
如果要排除某一行,分两种常见场景,对应不同实现方式:
1. 按行号排除某一行
比如要排除第5行,可以用slice()函数或者直接行索引:
# 用slice排除指定行号 autompg = autompg %>% slice(-5) # 或者直接用行索引 autompg = autompg[-5, ]
如果用dplyr的filter,也可以结合row_number():
autompg = autompg %>% filter(row_number() != 5)
2. 按某列的值排除某一行(比如根据name列)
比如要排除name为"ford pinto"的行:
autompg = autompg %>% filter(name != "ford pinto")
如果要排除多个特定值的行,可以用%in%:
autompg = autompg %>% filter(!name %in% c("ford pinto", "chevrolet chevelle malibu"))
补充:数据集加载优化
你的数据集加载代码可以简化成更简洁的tidyverse风格,不用单独设置列名:
library(tidyverse) autompg = read_table("http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data", col_names = c("mpg", "cyl", "disp", "hp", "wt", "acc", "year", "origin", "name"))
内容的提问来源于stack exchange,提问作者Ankita
相关产品推荐
相关产品推荐

