gpt4 book ai didi

r - 处理 R 中缺失/不完整的数据——是否有屏蔽但不删除 NA 的功能?

转载 作者:行者123 更新时间:2023-12-01 23:29:51 25 4
gpt4 key购买 nike

正如您对旨在数据分析的 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 有一个类,掩码数组,带有 mask 方法,它可以让您<在函数调用期间隐藏(但不删除)NA。 R中有类似的函数吗?

最佳答案

具体如何处理丢失的数据(如果我们知道丢失的数据可能会被标记为NA),可能因域而异。

举一个与时间序列相关的示例,您可能想要跳过、填充、插值或以不同方式插值,...只是(非常有用且流行)zoo具有与 NA 处理相关的所有这些功能:

zoo::na.approx  zoo::na.locf    
zoo::na.spline zoo::na.trim

允许近似(使用不同的算法)、向前或向后、使用样条插值或修剪。

另一个例子是 CRAN 上大量缺失的插补包——通常提供特定领域的解决方案。 [ 那么如果你称 R 为 DSL,那这是什么? “针对特定领域语言的子领域特定解决方案”还是 SDSSFDSL?相当拗口:)]

但是对于您的具体问题:不,我不知道基本 R 中的位级标志允许您将观察结果标记为“排除”。我认为大多数 R 用户会求助于诸如 na.omit() 等函数或使用您提到的 na.rm=TRUE 选项。

关于r - 处理 R 中缺失/不完整的数据——是否有屏蔽但不删除 NA 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com