r - 根据起始字母和列中是否存在星号进行过滤

标签 r

我有一个大数据框,有 22 列。我想根据第二列中的值进行过滤,所以如果该值不是以“X”开头,我想删除该行。如果第二列中的此值包含星号,我还想删除该行。

test <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
secondcolumn <- c("Xidfhsfd*isjdf", "Hsuhdfskdh", "Xwidfsoid", "X*sdkfjjhsd", "Xkdsfhsd", "Uskesfudhsk", "Sdfukhsdiu", "Osdfihsdoiuh", "Xsodifdsifj")
othercolumn <- c(3, 5, 7,2, 5, 8, 3, 0, 5)

df <- as.data.frame(test, secondcolumn, othercolumn)

这将如何完成?在此示例中,我想删除第 1、2、4、6、7、8 和 9 行。

谢谢!

最佳答案

希望这能行得通

# Condition 1: value start with "X"
cond1 <- grep("^X", d[, 2])
# Condition 2: doesn't contain "*"
cond2 <- grep("\\*", d[, 2], invert = TRUE)
# Rows where any of condition is true
wantedRows <- intersect(cond1, cond2)
# Table without those rows
d[wantedRows, ]

enter image description here

关于r - 根据起始字母和列中是否存在星号进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46246538/

相关文章:

r - 如何为 R shiny App 连续旋转 3D Plotly

r - 使用 libstdc++ 安装 R 包

r - 强制 rstudio 使用浏览器而不是查看器

r - 如何重现 CRAN 维护者看到的 ERROR/如何添加 .R/Makevars

r - 如何根据包含键值对的分离值高效地派生新变量?

r - 如何在 rgl 中绘制圆锥体的一部分?

r - backports 1.1.1 包安装失败

r - 使用 ggplot 中的另一个变量创建一个填充的直方图

r - 如何将我构建的模型拟合到另一个数据集并获得残差?

r - Boost 和 Rcpp 的问题