R语言:用dplyr与基础方法删NA行及提取非零test对应列值
解决方案
1. 删除second_column中含NA的行
注:你的数据里second_column的"NA"是字符型字符串,而非R原生缺失值NA,以下分两种场景给出方法:
针对字符型"NA"(当前数据状态)
- 基础R实现
df_clean <- df[df$second_column != "NA", ]
- dplyr包实现
library(dplyr) df_clean <- df %>% filter(second_column != "NA")
针对R原生缺失值(若将字符型"NA"转为原生缺失值后)
先转换缺失值:
df$second_column[df$second_column == "NA"] <- NA
再删除对应行:
- 基础R实现
# 仅删除second_column的缺失行 df_clean <- df[!is.na(df$second_column), ] # 若需删除所有含缺失值的行,可用na.omit(谨慎使用,会影响其他列) df_clean <- na.omit(df)
- dplyr包实现
# 仅删除second_column的缺失行 df_clean <- df %>% filter(!is.na(second_column)) # 或用drop_na快捷方式 df_clean <- df %>% drop_na(second_column)
2. 提取test列非零对应的first_column值
- 基础R实现
target_values <- df$first_column[df$test != 0] # 或用which定位索引 target_values <- df$first_column[which(df$test != 0)]
执行后target_values结果为[1] 3,符合需求。
- dplyr包实现
target_values <- df %>% filter(test != 0) %>% pull(first_column)
执行后同样得到[1] 3。
内容的提问来源于stack exchange,提问作者Bubbles
相关产品推荐
相关产品推荐

