- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在处理一个大型 data.table,该表具有基于 2 个引用列的某些组,然后有一个距离列,该列为每个组中的第一行定义,然后每次跳转 2 个单位。
做一个非常小的可重现的例子,我有:
reference1 <- c("ref1", "ref1", "ref1", "ref2", "ref2", "ref2", "ref2", "ref3", "ref3", "ref3")
reference2 <- c("fer1", "fer1", "fer1", "fer1", "fer1", "fer1", "fer1", "fer2", "fer2", "fer2")
firstdist <- c(2, NA, NA, 5, NA, NA, NA, 8, NA, NA)
df <- data.frame(ref1 = reference1,
ref2 = reference2,
dist = firstdist)
相当于
ref1 ref2 dist
1 ref1 fer1 2
2 ref1 fer1 NA
3 ref1 fer1 NA
4 ref2 fer1 5
5 ref2 fer1 NA
6 ref2 fer1 NA
7 ref2 fer1 NA
8 ref3 fer2 8
9 ref3 fer2 NA
10 ref3 fer2 NA
我想填写最后一次观察的列并将其向前推进 +2,因此我假设我想为此使用 zoo 包中的 na.locf。四处搜索,我还没有找到任何方法可以在添加常量整数的同时继续进行。
我想要的输出示例:
ref1 ref2 dist
1 ref1 fer1 2
2 ref1 fer1 4
3 ref1 fer1 6
4 ref2 fer1 5
5 ref2 fer1 7
6 ref2 fer1 9
7 ref2 fer1 11
8 ref3 fer2 8
9 ref3 fer2 10
10 ref3 fer2 12
例如用类似的东西
df$dist <- na.locf(df$dist, by = 2)
不能 100% 确定 na.locf 是最好的方法,因此也欢迎使用 data.table 解决方案,但由于我的表有数百万行,效率也相当重要
谢谢,
最佳答案
我会尝试以下方法:
library(data.table)
setDT(df)
df[, dist := seq(first(dist), by = 2, length.out = .N), by = .(ref1, ref2)]
# > df
# ref1 ref2 dist
# 1: ref1 fer1 2
# 2: ref1 fer1 4
# 3: ref1 fer1 6
# 4: ref2 fer1 5
# 5: ref2 fer1 7
# 6: ref2 fer1 9
# 7: ref2 fer1 11
# 8: ref3 fer2 8
# 9: ref3 fer2 10
# 10: ref3 fer2 12
此处,.N
是每组中的行数(按 ref1
和 ref2
分组)。
关于r - na.locf with seq in large column in R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174747/
我想对一个变量进行最后一次观察,但最多只能进行 2 次观察。也就是说,对于 3 个或更多 NA 的数据差距,我只会将最后一个观察结果用于接下来的 2 个观察结果,而将其余的作为 NA。 如果我使用 z
如何通过完全外连接有效地合并两个 data.table,同时通过在左侧和右侧滚动最后一个观察值 (LOCF) 来处理缺失值? 现实世界应用 - 有两个不一定交错的交易规则信号表,X、Y、持有(稀疏)
我最近需要按 id 跨时间向前和向后分布 12 个时不变变量的值。我的数据集包含 2,448,638 个观测值和 57 个变量。 这是一个可重现的讨论示例: # Load packages libra
随着时间的推移,我已经习惯了 data.table 在 r 中滚动连接的非常有用的功能。这些利用 LOCF 的操作(最后的观察结转)。不幸的是,我被迫在一个我不太熟悉的环境中工作(使用 postgre
我现在正在处理一个有很多缺失值的数据集。我正在使用 LOCF 方法来替换缺失值(因为它是重复测量)。我用过 na.locf函数来替换缺失值。这是我在创建的数据帧上所做的模拟示例 library(zoo
我有以下时间序列 > y y[c(1,2,5,9,10)] y [,1] 2011-09-04 NA 2011-09-05 NA 2011-09-06 3 201
我是 R 的新手,试图在 sparkR 中重写 R 代码。对名为 costTbl(还有 5 个其他列)的 data.table 的操作之一是 costTbl[,cost:=na.locf(cost,n
在为时间序列分析格式化数据时,一个常见的需求是通过随时间填充前向值来估算缺失值(也称为 Last-Observation-Carried-Forward/LOCF )。 虽然数据分析环境通常提供该功能
我需要使用 na.locf来自 zoo用最后观察到的值替换 NA 值的包。但是,我只需要针对特定国家/地区和变量对执行此操作。这些对是使用单独的数据框在逻辑上指定的,其示例如下所示。 Countr
我想根据该 ID 本身前几年的组值将我的数据集的 NA 填充到组变量中。na.locf(newData, na.rm = TRUE) 部分代码不起作用。我认为这是因为输入不是数字。或者是另一回事?有谁
我目前正在处理一个大型 data.table,该表具有基于 2 个引用列的某些组,然后有一个距离列,该列为每个组中的第一行定义,然后每次跳转 2 个单位。 做一个非常小的可重现的例子,我有: refe
我正在尝试将 zoo 包中的 na.locf 与使用 dplyr 的分组数据结合使用。我在这个问题上使用第一个解决方案:Using dplyr window-functions to make tra
有没有什么快速的方法可以将 DataFrame 的 NA 值转换为最后观察到的值? using DataFrames d = @data [1,NA,5,NA,NA] df = DataFrame(d
我想使用 na.locf为第一个观察值可能为零的数据帧传递非缺失值。 问题 dta % mutate_all(.funs = funs(na.locf(.))) Error in mutate_imp
我想检查 na.locf 是否有任何预先存在的技巧(来自 zoo 包),rle和 inverse.rle在 RCpp ? 我写了一个循环来实现,例如我做了na.locf(x, na.rm=FALSE,
在PostgreSQL中是否实现了数据插补方法Last Observation Carried Forward (LOCF)? 如果没有,我该如何实现这个方法? 最佳答案 下面的代码假定一个表 tbl
我已经看到了一个解决方案,但不能让它为团体工作 ( Fill NA in a time series only to a limited number ),并认为必须有一种更简洁的方法来做到这一点?
我正在尝试填写所有 NA,除了第 1 列和第 4 列的前两个 NA 以及第 2 列和第 3 列的三个 NA 以及最近的非 NA 值。这是我的数据和代码: hh<-structure(list(ka
我是一名优秀的程序员,十分优秀!