862 2006-05-19 6.241603 5.774208
863 2006-05-20 NA NA
864 2006-05-21 NA NA
865 2006-05-22 6.383929 5.906426
866 2006-05-23 6.782068 6.268758
867 2006-05-24 6.534616 6.013767
868 2006-05-25 6.370312 5.856366
869 2006-05-26 6.225175 5.781617
870 2006-05-27 NA NA
Run Code Online (Sandbox Code Playgroud)
我有一个数据框x像上面的一些NA,我想用相邻的非NA值填充,如2006-05-20它将是平均19和22
问题是怎么回事?
我需要将重叠的段聚合成一个范围内的所有连接段.
请注意,简单的foverlaps无法检测非重叠但已连接的段之间的连接,请参阅示例以进行说明.如果在我的情节中我的部分下雨,我正在寻找干燥的地面.
到目前为止,我通过迭代算法解决了这个问题,但我想知道这个问题是否有更优雅,更直接的前进方式.我肯定不是第一个面对它的人.
我正在考虑非平等滚动连接,但是要实现它
library(data.table)
(x <- data.table(start = c(41,43,43,47,47,48,51,52,54,55,57,59),
end = c(42,44,45,53,48,50,52,55,57,56,58,60)))
# start end
# 1: 41 42
# 2: 43 44
# 3: 43 45
# 4: 47 53
# 5: 47 48
# 6: 48 50
# 7: 51 52
# 8: 52 55
# 9: 54 57
# 10: 55 56
# 11: 57 58
# 12: 59 60
setorder(x, start)[, i := .I] # i is just a helper for plotting segments …Run Code Online (Sandbox Code Playgroud) 我想对一个变量进行最后一次观察,但最多只能进行 2 次观察。也就是说,对于 3 个或更多 NA 的数据差距,我只会将最后一个观察结果用于接下来的 2 个观察结果,而将其余的作为 NA。
如果我使用 来执行此操作,则zoo::na.locf该maxgap参数意味着如果间隙大于 2,则不会替换 NA。甚至不是最后 2. 有没有其他选择?
x <- c(NA,3,4,5,6,NA,NA,NA,7,8)
zoo::na.locf(x, maxgap = 2) # Doesn't replace the first 2 NAs of after the 6 as the gap of NA is 3.
Desired_output <- c(NA,3,4,5,6,6,6,NA,7,8)
Run Code Online (Sandbox Code Playgroud) PostgreSQL 中是否实现了最后观察结转 (LOCF) 数据插补方法?
如果没有,我该如何实现这个方法?
我有一个数据集,随着时间的推移观察多个患者及其诊断.有9个不同的虚拟变量,每个都代表一个特定的诊断,命名为例如L40,L41,K50,M05等.
如果虚拟变量中存在缺失值,我希望患者继续使用最后一个非缺失值,这样一旦患者接受诊断,它将继续进行后续观察.
我开始使用动物园包中的na.locf函数.
diagdata <- originaldata[,grep("^patient|^ar|^edatum|^K|^L|^M",colnames(originaldata))]
require(zoo)
require(data.table)
diagnosis <- data.table(diagdata)
diagnosis[,L40:=na.locf(L40),by=patient]
Run Code Online (Sandbox Code Playgroud)
这实现了我所期待的,但仅限于所讨论的列(L40).有没有办法将上述内容应用于所有相关的诊断栏,即以K,L和M开头的列?
我na.locf对zoo包中的功能有疑问.在下面的数据框架中,我想删除领先的NA(1987年,1988年),但保留前一年(1993年)的有效值.
Year X
1987 NA
1988 NA
1989 2
1990 5
1991 9
1992 16
1993 NA
1994 27
1995 36
Run Code Online (Sandbox Code Playgroud)
有没有人有这个问题的解决方案?
我想用 R 中的最后观察结转 (LOCF) 方法替换所有 NA 值。我拥有的数据集如下:
Value1 Value2 Value3 Group
100 56 82 Group1
150 NA 97 Group2
NA 66 NA Group3
120 NA NA Group4
Run Code Online (Sandbox Code Playgroud)
我想创建以下数据集:
Value1 Value2 Value3 Group
100 56 82 Group1
150 56 97 Group2
150 66 97 Group3
120 66 97 Group4
Run Code Online (Sandbox Code Playgroud)
任何有关如何做到这一点的见解将不胜感激。
locf ×7
r ×6
data.table ×2
imputation ×2
missing-data ×2
na ×2
zoo ×2
dataframe ×1
dplyr ×1
grouping ×1
overlap ×1
postgresql ×1