正如您对针对数据分析的 DSL 所期望的那样,R 可以很好地处理丢失/不完整的数据,例如:
许多 R 函数都有一个na.rm标志,当设置为TRUE时,删除 NA:
>>> v = mean( c(5, NA, 6, 12, NA, 87, 9, NA, 43, 67), na.rm=T)
>>> v
(5, 6, 12, 87, 9, 43, 67)
但是如果你想在函数调用之前处理 NA ,你需要做这样的事情:
从向量中删除每个“NA”:
vx = vx[!is.na(a)]
从向量中删除每个“NA”并将其替换为“0”:
ifelse(is.na(vx), 0, vx)
从数据框中删除包含“NA”的整个每一行:
dfx = dfx[complete.cases(dfx),]
所有这些功能都会永久删除“NA”或其中包含“NA”的行。
有时这并不是您想要的——制作数据框的“NA”切除副本对于工作流的下一步可能是必要的,但在后续步骤中,您通常希望这些行返回(例如,计算因先前调用“完整案例”而导致缺少行但该列中没有“NA”值的列的按列统计)。
尽可能清楚我在寻找什么:python/numpy 有一个类,掩码数组,带有一个掩码方法,它可以让你在函数调用期间隐藏-- 但不能删除 -- NAs。R中是否有类似的功能?