如何在R中按各列NaN值总和降序生成带列名的数据框?
解决方法
你的代码已接近正确结果,只需调整两处细节即可得到期望的格式:
data <- data.frame( emp_id = c (1:6), emp_name = c(515.2,NaN , NaN, 2 ,3,1), salary = c(623.3,NaN , NaN, NaN ,NaN,NaN), new_s = c(843.25,4,5,12,4,554.4) ) # 统计各列NaN数量,将列名改为你期望的NA_values NA_values <- data.frame(NA_values = colSums(is.na(data))) # 按NA_values降序排序,添加drop=FALSE强制保留数据框结构 Sorted_NA <- NA_values[order(NA_values$NA_values, decreasing = TRUE), , drop = FALSE]
运行后Sorted_NA的输出完全符合你的需求:
NA_values salary 5 emp_name 2 emp_id 0 new_s 0
关键调整说明
- 修改列名:把原代码中的
NA_value改为NA_values,匹配你期望的输出表头。 - 添加
drop=FALSE:当数据框仅含一列时,R默认会自动简化为向量,该参数可强制保留数据框结构,确保原列名(作为行名)和对应NaN计数都被完整保留。
内容的提问来源于stack exchange,提问作者edge selcuk
相关产品推荐
相关产品推荐

