r - R:通过“包含”行名称中的文本过滤行
问题描述
我正在使用 R 中的 mtcars 数据集。我的任务是使用 knitr::kable() 打印与本田和丰田卡对应的行。我被定向到此寻求帮助:https ://r4ds.had.co.nz/r-markdown.html#table
然而,该部分只讨论了打印数据集的前 5 行,根本没有讨论过滤它。我单击以阅读有关该功能的更多信息,但这对我来说都是陌生的。
我能说的最好的就是汽车的品牌和型号是行名。所以我需要过滤结果以仅打印名称包含“Honda”或“Toyota”的行,我需要使用 knitr::kable() 来完成。
我尝试过创建子集,但不确定如何使用行名来创建子集。也不知道如何搜索行名是否包含文本“Honda”或“Toyota”。
这是我使用 R 的第一天,而在今天之前,我唯一的编码经验是两年前的一些 C#。这对我来说非常令人沮丧,因为我可以在不到 30 秒的时间内在 Excel 中完成此操作。但是 R 就像一门外语,我不觉得我的教科书部分解释了这个问题 - 特别是对于一个全新的编码器(而且这门课不应该需要任何经验)。感谢我能得到的任何帮助!
解决方案
加载需要的库
首先加载tidyverse
包,因为下面的代码使用了这个包中的一些有用的功能。也许包喜欢rmarkdown
或knitr
需要加载。
library(tidyverse)
1.在索引列中按rownames过滤行
mtcars
是数据框类型的变量,也是R 中的内置数据集之一。Motor Trend Car Road Tests 数据集包含 1971 年杂志收集的汽车的 11 个方面(见本文末尾的表格)。
TL;DR 总结
filter
使用和过滤数据框的行,grepl
通过将其与正则表达式进行比较来查找命名索引列中的所有匹配项Honda|Toyota
。
filtered_cars <- mtcars %>%
filter(!grepl("Honda|Toyota", rownames(mtcars)))
深度解释:
汽车数据通过管道传输到函数dplyr::filter()
中,以仅提取满足所有给定条件的行的子集。这个条件是用一个数据掩码表达式作为函数参数给出的。对于这个表达式,我们使用grep
和正则表达式Honda|Toyota
。由于汽车的名称不在常规数据列中,因此无法使用mtcars$gear
. 因此rownames(mtcars)
必须使用获取索引列中名称的向量。这个管道表达式的结果被分配给filtered_cars
变量。
只需查看生成的数据帧的计数,就会发现有几行已被删除:
mtcars %>% count() # 32
filtered_cars %>% count() # 29
2.将数据框打印为markdown格式的表格
knitr::kable(
filtered_cars[1:5,],
caption = "A table in a markdown document (subset of mtcar data set)"
)
输出:
| | mpg| cyl| disp| hp| drat| wt| qsec| vs| am| gear| carb|
|:-----------------|----:|---:|----:|---:|----:|-----:|-----:|--:|--:|----:|----:|
|Mazda RX4 | 21.0| 6| 160| 110| 3.90| 2.620| 16.46| 0| 1| 4| 4|
|Mazda RX4 Wag | 21.0| 6| 160| 110| 3.90| 2.875| 17.02| 0| 1| 4| 4|
|Datsun 710 | 22.8| 4| 108| 93| 3.85| 2.320| 18.61| 1| 1| 4| 1|
|Hornet 4 Drive | 21.4| 6| 258| 110| 3.08| 3.215| 19.44| 1| 0| 3| 1|
|Hornet Sportabout | 18.7| 8| 360| 175| 3.15| 3.440| 17.02| 0| 0| 3| 2|
...
推荐阅读
- python-3.x - 在 tf.tensor 中赋值
- apache-spark - spark.sql.autoBroadcastJoinThreshold 中的错字...?
- css - CSS仅选择无序列表中的第一个孩子
- zendesk - Zendesk 中是否有任何 REST API 来获取未读消息计数?
- javascript - 为数组中的所有 img src 添加前缀
- linux - 从 fd_set 中提取文件描述符
- excel - 合并单元格,除非单元格包含某些文本
- ios - 如果 modalPresentationStyle 设置为 .custom,UIKit 将在视图控制器演示期间使用什么动画
- php - 如何为自定义帖子类型类别获取当前类别的父类别
- leaflet - React 中的 LeafletSlider