如何处理NA数据

时间:2018-12-24 00:06:16

标签: r data-science

我有一个包含56个变量和11k观察值的数据框,其中我试图计算一些KPI,但没有成功,因为我有很多NA值,而当我尝试计算百分比时却显示了NA。我需要做什么来忽略这些NA?

我试图将NA值替换为0,但这会改变我的真实结果。我也尝试替代“”,但这将我的专栏转换为chr。

我仅在需要计算均值时解决了该问题,因为我可以添加na.rm = TRUE。

range

当我在上述操作中具有NA值时,我需要看到0而不是NA,如何解决?

在下面查找数据框示例:

df$metric1_hrs <- df$metric1_min/60
df$metric2_hrs <- df$metric2_min/60
df$metric3_hrs <- df$metric3_min/60

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

 df$`Metric 1%` <- ifelse(is.na(df%`Metric 1 Minutes`) | is.na(df$`Total Hours`) , 
                          NA, df%`Metric 1 Minutes`/60)/df$`Total Hours`)
 df$`Metric 2%` <- ifelse(is.na(df%`Metric 2 Minutes`) | is.na(df$`Total Hours`) , 
                          NA, df%`Metric 2 Minutes`/60)/df$`Total Hours`)
 df$`Metric 3%` <- ifelse(is.na(df%`Metric 3 Minutes`) | is.na(df$`Total Hours`) , 
                          NA, df%`Metric 3 Minutes`/60)/df$`Total Hours`)

这将为涉及NA的任何操作提供NA,否则将计算除法。您可以从此处用NA替换任何想要的值

现在使用问题中的数据集,这样做是否符合您的要求:

 df$hours <- df$total-rowSums(df[, 3:6], na.rm = T)/60

答案 1 :(得分:0)

YaleToolkit::whatis()对于查找数据帧中每个变量的缺失值数量很有用。例如:

library(YaleToolkit)
whatis(mtcars)

...以及输出:

   variable.name    type missing distinct.values precision    min     max
1            mpg numeric       0              25     0.100 10.400  33.900
2            cyl numeric       0               3     1.000  4.000   8.000
3           disp numeric       0              27     0.100 71.100 472.000
4             hp numeric       0              22     1.000 52.000 335.000
5           drat numeric       0              22     0.010  2.760   4.930
6             wt numeric       0              29     0.001  1.513   5.424
7           qsec numeric       0              30     0.010 14.500  22.900
8             vs numeric       0               2     1.000  0.000   1.000
9             am numeric       0               2     1.000  0.000   1.000
10          gear numeric       0               3     1.000  3.000   5.000
11          carb numeric       0               6     1.000  1.000   8.000
>

要添加丢失的百分比,请将whatis()的结果保存到数据框中,然后进行计算。如果将whatis()输出保存到whatisResult,我们将计算pctMissing <- whatisResult$missing / nrow(mtcars)