正如您期望的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)
Run Code Online (Sandbox Code Playgroud)
但是如果你想在函数调用之前处理NA ,你需要做这样的事情:
从矢量中删除每个'NA':
vx = vx[!is.na(a)]
Run Code Online (Sandbox Code Playgroud)
从矢量中删除每个'NA'并将其替换为'0':
ifelse(is.na(vx), 0, vx)
Run Code Online (Sandbox Code Playgroud)
从数据框中删除包含"NA"的整个行:
dfx = dfx[complete.cases(dfx),]
Run Code Online (Sandbox Code Playgroud)
所有这些功能都会永久删除 "NA"或其中带有"NA"的行.
有时候这并不是你想要的 - 在工作流程的下一步可能需要为数据帧的"NA"删除副本,但在后续步骤中,你经常需要这些行(例如,计算一个由于先前调用"完整案例"而导致缺少行的列的列式统计信息,但该列中没有"NA"值.
尽可能清楚我正在寻找的东西:python/numpy有一个类,蒙面数组,有一个掩码方法,它允许你在函数调用期间隐藏 -但不删除 - NA.R中是否有类似的功能?