【问题标题】:Removing multiple variables with dplyr使用 dplyr 删除多个变量
【发布时间】:2016-02-24 16:21:35
【问题描述】:

一个数据框有以下变量:

names(df1)
"var1_a" "var1_b" "var2_a" "var2_b" "var3_a" "var4_a"

我正在使用 dplyr 删除变量,如下所示 - 一次一个变量:

df2 <- df1 %>% select(-starts_with(("var1"), everything()))
df2 <- df2 %>% select(-starts_with(("var2"), everything()))

使用“dplyr”,有没有办法将两条线连接成一条线?

【问题讨论】:

  • 尝试使用正则表达式,比如df2 &lt;- df1 %&gt;% select(-matches("^(var1|var2)")) 也许?
  • 不知道你是否坚持使用dplyr::select解决方案;在基础 R 中,df1[,!grepl("^var[12]",names(df1))] 工作正常...
  • @DavidArenburg: 或select(-matches("^var[12]"))
  • @Ben,是的,matches 只是一个 grep 包装器,请参阅 getAnywhere("matches")(我指的是您的第一条评论)
  • @DavidArenburg,你应该发表你的评论作为答案......

标签: r dplyr


【解决方案1】:

您可以根据需要构造一个正则表达式并使用matches 包装器来相应地过滤您的列(对@BenBolker 进行一些修改)

df2 <- df1 %>% select(-matches("^var[12]"))

或者只是使用%&lt;&gt;%管道修改df1

library(magrittr)
df1 %<>% select(-matches("^var[12]"))

【讨论】:

  • 您的第一条评论的变体也有效:df1%&gt;% select(-matches("var1|var2")) 。对于不熟悉正则表达式的人来说可能更直观。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 2013-11-05
  • 2018-01-21
  • 2019-04-26
相关资源
最近更新 更多