R语言 删除空单元格的行
一个数据框架可能包含属于不同数据类型的元素作为单元格。然而,它可能包含空白行或包含所有列中缺失值的行。这些行相当于假记录,被称为空行。有多种方法可以删除它们。
方法1:使用for循环删除行
声明一个向量来保存所有包含所有空白值的行的索引。在数据框架的行上做一个for循环的迭代。一个计数器被设置为0来存储每一行的所有空白值。另一个迭代是通过列进行的。单元格的值与空白值进行比较,如果它满足条件,计数器就会增加。在每个内循环迭代之后,计数器的值与数据框架中的列数进行比较。如果这些值是相等的,那么行的索引就会被附加到向量上。在外循环结束后,存储在向量中的行指数被删除,使用行指数向量前面的’-‘。
这种方法的时间复杂度是O(m *n )
,其中m是行的数量,n是列的数量。
例子
输出
方法2:使用apply方法删除R中所有空白单元格的行
R中的apply()方法用于在R对象、向量、数据帧或矩阵上应用一个指定的函数。该方法返回一个向量或数组,或通过将函数应用于数组或矩阵的相应部分而得到的数值列表。
语法: apply(df, axis, FUN, …)
参数:
df – 一个数据帧或矩阵
axis – 应用该函数的轴。对于一个数据框架,1表示行,2表示列,c(1, 2)表示行和列。
FUN – 要应用的函数。
数据框架受到的约束是检查单元格的值是否为””,也就是空白。在这种方法中,FUN等同于 “所有”,因为任何特定行的所有列都应该满足没有空白单元格值的条件。
例子
输出
方法3:删除全部为NA的行
一个数据框架可以由缺失的值或替代单元格值的NA组成。这种方法使用许多内置的R方法来移除所有含有NA的行。
- 可以使用ncol()方法检查数据框架的列数。
语法
ncol( df)
- 通过使用is.na()方法,可以检查单个单元格的值是否为NA。数据框架被作为参数传递给该方法。它返回一个与原始数据框架尺寸相当的数据框架。它由逻辑值组成,如果值是NA,则为TRUE,否则为FALSE。
语法
na_df <- is.na(df)
- rowSums()方法适用于由上一步获得的逻辑值组成的数据框架。它返回每一行中遇到的NA值的总和的计数。结果向量包含整数,表示每行的缺失值数量。
语法
rowSums(na_df)
- 如果每行的na值之和不等同于列的数量,这些行将被存储在一个单独的变量中作为输出。如果两者相等,则意味着该特定行的所有列都含NA。
例子
输出