You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的tidyverse中用where子句筛选含Math/Eng及数值型变量

解决方案

要筛选出包含"Math"或"Eng"的变量,同时保留所有数值型变量,可通过dplyr的select()结合where()函数实现,修正后的完整代码如下:

library(tidyverse)

dat1 <- tibble(
  var1 = c("Math", "Kisw", "Computer", "Biology"),
  var2 = c("Science", "Geog", "Studies", "Math"),
  var3 = c("Kisw", "Math", "Phys", "Psychology"),
  var4 = rnorm(4, 80, 5),
  var5 = c("Yes", "No", "Yes", "No"),
  var6 = c("No", "Yes", "No", "No"),
  var7 = rnorm(4, 80, 5),
  var8 = rnorm(4, 80, 5),
)

# 执行筛选
dat1 %>%
  select(
    where(~ any(.x %in% c("Math", "Eng"))),
    where(is.numeric)
  )

代码说明

  • where(~ any(.x %in% c("Math", "Eng"))):判断每一列是否存在"Math"或"Eng"值,保留符合条件的列
  • where(is.numeric):直接保留所有数值类型的列
  • 两个where()条件用逗号分隔,select()会自动合并两类符合条件的列返回

输出结果

运行后会得到包含var1、var2、var3(含"Math"值)以及var4、var7、var8(数值型)的数据集,自动排除var5、var6这类不符合条件的列。

内容的提问来源于stack exchange,提问作者Moses

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:25:28