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

当x数据集某变量全为NA时,如何移除对应x、y数据集的行?

问题描述

现有合并了变量与时间匹配的两组时间序列数据,其中x数据集的value列可能全为数值、部分为NA或全为NA,y数据集的value列无NA值。需求是:当x数据集的某个var分组下value全为NA时,移除该var对应的所有x、y数据集的行。

示例数据

var <- c("a", "a", "a", "a", "a", "a",
         "b", "b", "b", "b", "b", "b",
         "c", "c", "c", "c", "c", "c")
value <- c(1, 2, NA, 4, 3, 2,
           NA, NA, NA, 3, 3, 3,
           4, 2, 1, 2, 5, 4)
time <- c(1, 2, 3, 1, 2, 3,
          1, 2, 3, 1, 2, 3, 
          1, 2, 3, 1, 2, 3)
dataset <- c("x", "x", "x", "y", "y", "y",
             "x", "x", "x", "y", "y", "y",
             "x", "x", "x", "y", "y", "y")

Test.df <- data.frame(var, value, time, dataset)

原始数据输出:

var value time dataset
   a     1    1       x
   a     2    2       x
   a    NA    3       x
   a     4    1       y
   a     3    2       y
   a     2    3       y
   b    NA    1       x
   b    NA    2       x
   b    NA    3       x
   b     3    1       y
   b     3    2       y
   b     3    3       y
   c     4    1       x
   c     2    2       x
   c     1    3       x
   c     2    1       y
   c     5    2       y
   c     4    3       y

期望结果

var value time dataset
    a     1    1       x
    a     2    2       x
    a    NA    3       x
    a     4    1       y
    a     3    2       y
    a     2    3       y
    c     4    1       x
    c     2    2       x
    c     1    3       x
    c     2    1       y
    c     5    2       y
    c     4    3       y

解决方案

方法1:基础R实现

先筛选出x数据集中value不全为NA的var列表,再保留原数据中属于这些var的行:

# 提取x数据集里value不全为NA的var
valid_vars <- with(subset(Test.df, dataset == "x"), 
                   tapply(value, var, function(x) any(!is.na(x)))) %>%
  which() %>% names()

# 过滤原数据得到结果
result_df <- Test.df[Test.df$var %in% valid_vars, ]

方法2:dplyr(tidyverse)实现

利用分组筛选逻辑,更简洁直观:

library(dplyr)

result_df <- Test.df %>%
  group_by(var) %>%
  filter(any(dataset == "x" & !is.na(value))) %>%
  ungroup()

逻辑说明:按var分组后,只要该分组下存在x数据集且value不为NA的记录,就保留整个分组的所有行,自动排除x数据集下value全为NA的var。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:15:31