使用 na.approx 在数据框中插入 NA 值

2023-12-08

我正在尝试删除NA通过插值从我的数据框中获取na.approx()但无法删除所有NAs.

我的数据帧是 4096x4096,其中 270.15 作为无效值的标志。我需要在所有点上连续的数据来提供气象模型。昨天我询问并获得了关于如何基于另一个数据框中替换数据框中的值的答案。但在那之后我来到了na.approx()然后决定将 270.15 值替换为NA并尝试na.approx()插入数据。但问题是为什么na.approx()不取代所有 NA。

这就是我正在做的:

  • 使用hdf5load读取原始hdf文件
  • 对数据框进行子集化 (4094x4096)
  • 用 NA 替换标志值

    > sst4[sst4 == 270.15 ] = NA
    
  • 检查第一列(或任何其他列)

    > summary(sst4[,1])
    
    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's
    271.3   276.4   285.9   285.5   292.3   302.8  1345.0
    
  • 运行 na.approx

    > sst4=na.approx(sst4,na.rm="FALSE")
    
  • 检查第一列

    > summary(sst4[,1]) 
    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's
    271.3   276.5   286.3   285.9   292.6   302.8   411.0
    

正如您所看到的,411 NA 尚未被删除。为什么?它们都对应于前导/结束列值吗?

head(sst4[,1])
[1] NA NA NA NA NA NA
tail(sst4[,1])
[1] NA NA NA NA NA NA

na.approx 是否需要在 NA 之前和之后具有有效值才能进行插值?我需要设置任何其他 na.approx 选项吗?

非常感谢


一个可重复的小例子:

library(zoo)
set.seed(1)
m <- matrix(runif(16, 0, 100), nrow = 4)
missing_values <- sample(16, 7)
m[missing_values] <- NA
m
         [,1]     [,2]      [,3]     [,4]
[1,] 26.55087 20.16819 62.911404 68.70228
[2,] 37.21239       NA  6.178627 38.41037
[3,]       NA       NA        NA       NA
[4,] 90.82078 66.07978        NA       NA

na.approx(m)
         [,1]     [,2]      [,3]     [,4]
[1,] 26.55087 20.16819 62.911404 68.70228
[2,] 37.21239 35.47206  6.178627 38.41037
[3,] 64.01658 50.77592        NA       NA
[4,] 90.82078 66.07978        NA       NA

m[4, 4] <- 50
na.approx(m)
         [,1]     [,2]      [,3]     [,4]
[1,] 26.55087 20.16819 62.911404 68.70228
[2,] 37.21239 35.47206  6.178627 38.41037
[3,] 64.01658 50.77592        NA 44.20519
[4,] 90.82078 66.07978        NA 50.00000

是的,看起来您确实需要知道列的开始/结束值,否则插值不起作用。你能猜出你的边界值吗?

另一个编辑:因此默认情况下,您需要知道列的开始值和结束值。然而有可能得到na.approx总是通过传递来填补空白rule = 2。请参阅菲利克斯的回答。您还可以使用na.fill根据 Gabor 的评论,提供默认值。最后,您可以在两个方向上插值边界条件(见下文)或猜测边界条件。


编辑:进一步的想法。自从na.approx仅在列中插值,并且您的数据是空间的,也许在行中插值也很有用。然后你就可以取平均值了。

na.approx当整列都失败时NA,所以我们创建一个更大的数据集。

set.seed(1)
m <- matrix(runif(64, 0, 100), nrow = 8)
missing_values <- sample(64, 15)
m[missing_values] <- NA

Run na.approx双向。

by_col <- na.approx(m)
by_row <- t(na.approx(t(m)))

找出最好的猜测。

default <- 50
best_guess <- ifelse(is.na(by_row), 
  ifelse(
    is.na(by_col), 
    default,              #neither known
    by_col                #only by_col known
  ), 
  ifelse(
    is.na(by_col), 
    by_row,               #only by_row known
    (by_row + by_col) / 2 #both known
  )
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 na.approx 在数据框中插入 NA 值 的相关文章

  • Pandas DataFrame:如果列为空,则复制列的内容

    我有以下带有命名列和索引的 DataFrame a a b b 1 5 NaN 9 NaN 2 NaN 3 3 NaN 3 4 NaN 1 NaN 4 NaN 9 NaN 7 数据源导致某些列标题的复制方式略有不同 例如 如上所述 某些列标
  • 如何向 pandas 数据框中的新列添加值?

    我想在 Pandas 数据框中创建一个新的命名列 将第一个值插入其中 然后将另一个值添加到同一列 就像是 import pandas df pandas DataFrame df New column append a df New col
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 获取数据框中列与特定值匹配的整数行索引

    给定一个 Pandas 数据框 其中一列如下所示 Date 2016 04 15 2016 04 14 2016 04 13 2016 04 12 2016 04 11 2016 04 08 假设值是唯一的 如何获取特定值的行索引 例如 2
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 重复测量引导统计数据,按多个因素分组

    我有一个看起来像这样的数据框 但显然还有更多行等 df lt data frame id c 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 cond c A A B B A A B B A A B B A A B B co
  • Pandas:向量化局部范围操作([i:i+2] 行的最大值和总和)

    我希望在数据帧中的每一行的局部范围内进行计算 同时避免速度缓慢for环形 例如 对于下面数据中的每一行 我想找到未来 3 天内 包括当天 的最高气温以及未来 3 天内的总降雨量 Day Temperature Rain 0 30 4 1 3
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • 在 R 中绘制 Likert 变量的堆积条形图

    假设我有一个如下所示的数据框 P Q1 Q2 1 1 4 1 2 2 3 4 3 1 1 4 其中的列告诉我哪个人相应地回答了问题 q1 q2 中的哪一个 这些问题需要按照 4 分李克特量表进行回答 例如 批准 表示 1 稍微批准 表示 2
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re

随机推荐

  • 将不同的行属性转置/透视为列并将另一个属性分组? [复制]

    这个问题在这里已经有答案了 可能的重复 SQL Server动态PIVOT查询 是否可以对下表执行查询 Game Player Goals Game1 John 1 Game1 Paul 0 Game1 Mark 2 Game1 Luke
  • 调整jqGrid页面编辑框的大小

    在我的 ASP NET MVC 3 应用程序中 我在 jqGrid 上启用了寻呼机 如下图所示 Page 的文本框 图像的中心 其中有数字 1 非常宽 比它需要的宽得多 有谁知道如何调整这个盒子的大小 当我的网格比这个窄时 这尤其是一个问题
  • Laravel API 连接多个数据库

    我正在使用 Laravel Lumen 构建 REST API 这个 API 的想法是为多个订餐网站提供后端 它们共享相同的后端逻辑 模型 控制器等 这样每个网站只需要它自己的前端应用程序 我计划为此使用 Angular 每个网站都有自己的
  • 尝试使用 PDO 连接访问数据库

    我正在尝试连接到 C 驱动器上的访问数据库 我在 INI 文件中取消了访问扩展 pdo 的注释 我运行了驱动程序测试 它显示 odbc 驱动程序已安装 我正在将 wamp 与 apache 服务器一起使用 但我不断收到此错误 SQLSTAT
  • 与 Typescript 一起使用的 ThemeProvide 出现错误

    我想创建一个组件 const StyledDiv styled div width 10rem height 3rem border radius 0 2rem background color theme colorVariant col
  • R 中近似子串匹配的位置

    我正在使用 R 进行字符串处理 我有一个带有一列字符串的数据框 例如 df lt data frame textcol c In this substring would like to find the position of this
  • Apache Beam Google Datastore ReadFromDatastore 实体 protobuf

    我正在尝试使用 apache beam 的 google datastore api 来 ReadFromDatastore p beam Pipeline options options p Read from Datastore gt
  • 宏重载

    是否可以定义这样的东西 define FOO x y BAR define FOO x sth y BAR sth 这样 FOO daf sfdas FOO fdsfs something 5 翻译成这样 BAR BAR something
  • UITableViewController 中的状态栏

    我用一个UITableViewController into a Navigation Controller当出现UIButton按下 当按钮被按下时TableViewController出现时没有状态栏 如果我选择一个单元格TableVi
  • FRestore文档onUpdate:仅针对特定字段触发

    在我的云功能中 我有下一个功能 export const collectionOnUpdate functions firestore document cards id onUpdate async change context gt a
  • Node.js + Socket.io |在服务器上设置自定义标头

    我使用 Helmet 和 Express 从服务器端设置相当多的安全 HTTP 标头 当在 Node js 应用程序顶部渲染客户端页面时 使用以下命令 这做得很好 var app express app use helmet res ren
  • 在另一个 IQueryable 中使用 IQueryable

    我有一个扩展方法 它返回一个 IQueryable 来获取公司产品 我只想在 IQueryable 中使用它作为子查询 public static class DBEntitiesCompanyExtensions public stati
  • 通过 JSF 将 PDF 发送到浏览器

    我正在尝试将 JasperReports 生成的 PDF 文件发送到用户的浏览器 我找不到托管 bean 方法中的问题 以下是一个片段 System out println Making pdf FacesContext fc FacesC
  • Windows Phone 8 上的 HttpWebRequest 同步

    为了设计 重用可用于 WPF 应用程序 Windows Phone 8 应用程序和更高版本的 Windows 8 RT 应用程序的库 我们需要进行一些 HttpWebRequest 调用 最好是同步调用 以免破坏现有应用程序 问题是已经存在
  • 使用 AJAX 和 JQuery 通过 PHP 进行简单验证

    我是新来的AJAX 我想学习如何验证表单 假设我有一个带有两个输入字段的表单 当我点击提交时 我想用 php 脚本检查页面 验证成功后我想重定向到action submitForm php 当一个或多个字段根据validation php我
  • OpenVINO:如何使用推理引擎构建 OpenCV 以支持从模型优化器加载模型

    我安装了 OpenVINO 并想在 Windows 10 上运行以下代码 import numpy as np import cv2 import sys from get face id import face id getter fro
  • 如何在 Oracle 11gr2 中安装 Procedural Option

    我一直在尝试在计算机上本地安装的 Oracle 11gR2 上创建 PL SQL 包并运行过程 但一直收到 ORA 00900 错误 基于此article 看来Procedural Option还没有安装 这是我登录时 sqlplus 的输
  • 事件驱动编程如何帮助仅执行 IO 的 Web 服务器?

    我正在考虑为我们的新后端项目使用一些框架 编程方法 它涉及 BackendForFrontend 实现 聚合下游服务 为简单起见 以下是它所经历的步骤 请求进入网络服务器 Web服务器发出下游请求 下游请求返回结果 Web服务器返回请求 事
  • CodeIgniter 2.0 - 验证数组

    我在将一段表单验证代码转换为 CI 2 0 时遇到一些问题 我正在尝试验证一组复选框 但由于某种原因验证无法运行回调或不验证 如何验证一组复选框 以便至少选中一个并且值必须是选项之一 选项数组的键 EDIT 这是对我失败的地方的更好解释 可
  • 使用 na.approx 在数据框中插入 NA 值

    我正在尝试删除NA通过插值从我的数据框中获取na approx 但无法删除所有NAs 我的数据帧是 4096x4096 其中 270 15 作为无效值的标志 我需要在所有点上连续的数据来提供气象模型 昨天我询问并获得了关于如何基于另一个数据