gpt4 book ai didi

将 NA 替换为 NA 前后情况的平均值

转载 作者:行者123 更新时间:2023-12-02 19:42:13 26 4
gpt4 key购买 nike

假设我有以下 data.frame:

t<-c(1,1,2,4,5,4)
u<-c(1,3,4,5,4,2)
v<-c(2,3,4,5,NA,2)
w<-c(NA,3,4,5,2,3)
x<-c(2,3,4,5,6,NA)

df<-data.frame(t,u,v,w,x)

我想将 NA 替换为代表 NA 前后情况平均值的值,除非一行以 NA 开头(第 4 行)或结束(第 5 行)。当该行以 NA 开头时,我想用以下情况替换 NA。当该行以 NA 结尾时,我想用之前的情况替换 NA。

因此,我希望我的输出看起来像:

t<-c(1,1,2,4,5,4)
u<-c(1,3,4,5,4,2)
v<-c(2,3,4,5,3.5,2)
w<-c(3,3,4,5,2,3)
x<-c(2,3,4,5,6,6)

df<-data.frame(t,u,v,w,x)

最佳答案

问题指的是第 4 行以 NA 开头,第 5 行以 NA 结尾,但实际上输入 df 的第 4 列以 NA 开头,输入的第 5 列以 NA 结尾,两者都不是输入的第 4 行和第 5 行以 NA 开头或结尾,因此我们假设是指列,而不是行。问题中还有两个数据框都名为 df 。显然,一个应该代表输入,另一个同名的数据帧是输出,但为了完全清楚,我们重复了最后注释中使用的 df 的定义。

动物园中的

na.approx 几乎就是这样做的。 (如果矩阵结果正常,则省略 data.frame() 部分。)

library(zoo)

data.frame(na.approx(df, rule = 2))

给予:

  t u   v w x
1 1 1 2.0 3 2
2 1 3 3.0 3 3
3 2 4 4.0 4 4
4 4 5 5.0 5 5
5 5 4 3.5 2 6
6 4 2 2.0 3 6

注意:为了清楚起见,我们使用此数据框作为上面的输入:

df <- structure(list(t = c(1, 1, 2, 4, 5, 4), u = c(1, 3, 4, 5, 4, 
2), v = c(2, 3, 4, 5, NA, 2), w = c(NA, 3, 4, 5, 2, 3), x = c(2,
3, 4, 5, 6, NA)), .Names = c("t", "u", "v", "w", "x"), row.names = c(NA,
-6L), class = "data.frame")

关于将 NA 替换为 NA 前后情况的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46712895/

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