我有一个包含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
答案 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)
。