使用na.omit()移除NA值时美国数据框全失的问题求助
问题分析
na.omit()和drop_na()默认会删除任意一列包含NA的行。如果筛选出的美国数据中,除了Carbon_Footprint_percapita列外,其他列存在NA,就会导致所有行被删除——这就是你现在遇到的问题。
解决方案
只需针对Carbon_Footprint_percapita列处理NA,保留该列有值的行即可,以下是几种可行写法:
- 方法1:用
filter()直接判断目标列
us_df <- country_data %>% filter(country == "United States", !is.na(Carbon_Footprint_percapita))
- 方法2:用
drop_na()指定目标列drop_na()支持指定只检查某一列的NA,不会因为其他列的NA删除行:
us_df <- country_data %>% filter(country == "United States") %>% drop_na(Carbon_Footprint_percapita)
- 方法3:纠正
complete.cases()的用法
你之前用complete.cases()得到列表是因为用法错误,正确写法是针对目标列筛选:
us_df <- country_data %>% filter(country == "United States") %>% filter(complete.cases(Carbon_Footprint_percapita))
内容的提问来源于stack exchange,提问作者konichiwow
相关产品推荐
相关产品推荐

