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

R语言:如何基于指定行的非空值筛选数据集列?

解决R语言筛选指定列的需求

需求说明

从给定的数据框中筛选出players列,以及player D所在行存在非空值的列。

原数据集

df <- data.frame(players=c('A', 'B', 'C', 'D', 'E'),
                 rebounds=c("", 3, "", "", ""),
                 assists=c("", 9, 4, 4, 3),
                 ratings=c("", 8, 4, 7, ""))

最优解法

以下两种方法都能高效实现需求,可根据是否使用tidyverse工具选择:

方法1:使用dplyr(tidyverse风格,代码简洁)

library(dplyr)

# 筛选目标列:保留players,加上D行非空的列
result <- df %>%
  select(players, which(.[df$players == "D", ] != ""))

方法2:基础R实现(无需额外安装包)

# 提取player D所在的行
d_row <- df[df$players == "D", ]
# 确定需要保留的列:players列 + D行非空的列
keep_cols <- c("players", names(d_row)[d_row != ""])
# 筛选数据框
result <- df[, keep_cols, drop = FALSE]

输出结果

运行后得到的结果如下:

> print(result)
  players assists ratings
1       A                
2       B       9       8
3       C       4       4
4       D       4       7
5       E       3        

补充说明

如果数据中的空值是NA而非空字符串,只需将判断条件改为!is.na(d_row)即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:10:33