移除所有 NA 超过 50% 的因子变量
Remove all factorial variables with more than 50% NA
我有一个 headers 的 CSV 文件。有些特征(列)是阶乘的,有些是数值的。
对于阶乘变量,我有很多包含很多 NA 的列,例如:
Num1 Fact1 Num2 Fact2 Fact3
9889 Bla 23 BBxv NA
NA NA 456 BBxz NA
NA Abcd 3 BBxx Jet
NA NA 100 BBxy NA
NA NA NA NA NA
我想删除所有 NA 超过 50% 的阶乘列。
例如结果数据框应该是:
Num1 Num2 Fact2
9889 23 BBxv
NA 456 BBxz
NA 3 BBxx
NA 100 BBxy
NA NA NA
此外,有没有办法在相同的过程中也删除其中 NA 超过 50% 的数字列?
例如清理后生成的数据框将是一个仅包含 Num2
和 Fact2
列的数据框。
尝试:
dff[colMeans(is.na(dff)) <= 0.5]
应该得到:
Num2 Fact2
23 BBxv
456 BBxz
3 BBxx
100 BBxy
NA <NA>
编辑:
如果您希望在同一过程中删除包含超过 50% 的零的列,请尝试以下操作:
dff[colMeans(is.na(dff)) <= 0.5 & colMeans((dff == 0), na.rm = T) <= 0.5]
希望对您有所帮助。
我有一个 headers 的 CSV 文件。有些特征(列)是阶乘的,有些是数值的。
对于阶乘变量,我有很多包含很多 NA 的列,例如:
Num1 Fact1 Num2 Fact2 Fact3
9889 Bla 23 BBxv NA
NA NA 456 BBxz NA
NA Abcd 3 BBxx Jet
NA NA 100 BBxy NA
NA NA NA NA NA
我想删除所有 NA 超过 50% 的阶乘列。
例如结果数据框应该是:
Num1 Num2 Fact2
9889 23 BBxv
NA 456 BBxz
NA 3 BBxx
NA 100 BBxy
NA NA NA
此外,有没有办法在相同的过程中也删除其中 NA 超过 50% 的数字列?
例如清理后生成的数据框将是一个仅包含 Num2
和 Fact2
列的数据框。
尝试:
dff[colMeans(is.na(dff)) <= 0.5]
应该得到:
Num2 Fact2
23 BBxv
456 BBxz
3 BBxx
100 BBxy
NA <NA>
编辑:
如果您希望在同一过程中删除包含超过 50% 的零的列,请尝试以下操作:
dff[colMeans(is.na(dff)) <= 0.5 & colMeans((dff == 0), na.rm = T) <= 0.5]
希望对您有所帮助。