首页 > 解决方案 > 在选择函数之外使用starts_with() 来定义向量

问题描述

我有一个很大的原始 data.frame,我在整个分析过程中过滤以形成较小的 data.frame。

原始 data.frame 的格式为:

> head(Moment_all)
    Exterior   Interior Sections Spacing     UG              Names
1 0.02736669 0.03067941    84-12      12  UG-84           Sample 1
2 0.53220402 0.53739861    124-9       9 UG-124          AASHTO
3 0.54016470 0.54016538    116-9       9 UG-116          Sample 10
4 0.54151540 0.51516650    124-9       9 UG-124           Sample 8
5 0.54663913 0.52989489    124-9       9 UG-124 Sample ./124-9-DIA
6 0.54960475 0.51772120    116-9       9 UG-116           Mean

我将要为其中一个子集排除的行定义为:

notbaseline <- c(starts_with("Sample ./"),"Mean","AASHTO")

然后我将新的 data.frame 定义为:

data.exterior <- Moment_all[!grepl(paste(notbaseline,collapse = "|"),Moment_all$Names),]

问题是我不能starts_with在保护列时使用,并且我需要过滤的各种类型的字符并不总是具有直接调用它们的明显模式。

有没有更好的方法根据列中的字符删除行Names

谢谢!

标签: rdataframe

解决方案


starts_with()是一个dplyr旨在帮助选择数据框的特定列的函数。

您想要做的是如下所示:

library(dplyr)
library(stringr)

filter(Moment_all, str_detect(Names, "Sample \\./", negate = TRUE), !Names %in% c("Mean", "AASHTO"))

推荐阅读