如何获取R语言tbl_df/dataframe每列不含NA的实际有效长度
统计tbl_df每列有效数据长度的方法
R的数据结构要求数据框(包括tbl_df)的所有列长度必须一致,导入CSV时会自动以最长列的长度为标准,其余列缺失位置填充NA,因此dim、length、nrow统计到的都是补全后的总长度,无法得到单列的有效数据长度。你需要统计每列非NA值的数量,即可得到对应列的有效数据长度,实现方法如下:
基础R实现
调用sapply遍历数据框的每一列,对每列统计非NA值的数量:sapply(df, function(col) sum(!is.na(col)))如果导入CSV时空值被识别为空字符串而非NA,可以调整判断逻辑:
sapply(df, function(col) sum(!is.na(col) & trimws(col) != ""))tidyverse实现(适配tbl_df格式)
用dplyr的across语法批量统计所有列的非NA值数量,和tidyverse生态兼容性更好:library(dplyr) df %>% summarise(across(everything(), ~ sum(!is.na(.x))))
内容的提问来源于stack exchange,提问作者TeoK
相关产品推荐
相关产品推荐

