gpt4 book ai didi

r - 按近似列值合并数据框

转载 作者:行者123 更新时间:2023-12-04 17:53:01 25 4
gpt4 key购买 nike

我有两个包含时间序列的数据帧(时间编码为数字,而不是时间对象;时间未排序)。我想将一个数据帧中的响应变量标准化为另一个数据帧中的响应变量。问题是两个数据帧中的时间点并不完全相同。因此,我需要通过两个时间列的近似匹配来合并两个数据帧。

数据如下所示:

df1 <- structure(list(t1 = c(3, 1, 2, 4), y1 = c(9, 1, 4, 16)), .Names = c("t1", "y1"), row.names = c(NA, -4L), class = "data.frame")
df2 <- structure(list(t2 = c(0.9, 4.1), y2 = structure(1:2, .Label = c("a", "b"), class = "factor")), .Names = c("t2", "y2"), row.names = c(NA, -2L), class = "data.frame")

结果应如下所示:
t1  y1    y2
1 1 a
4 16 b

好像 approxapproxfun会很有用,但我不太明白该怎么做。

最佳答案

您可以使用 na.approx 轻松完成此操作来自动物园:

library(zoo)
Data <- merge(df1, df2, by.x="t1", by.y="t2", all=TRUE)
Data$y1 <- na.approx(Data$y1, na.rm=FALSE, rule=2)
na.omit(Data)
# t1 y1 y2
# 1 0.9 1 a
# 6 4.1 16 b

你可以用 approx 做到这一点也:
Data <- merge(df1, df2, by.x="t1", by.y="t2", all=TRUE)
y1.na <- is.na(Data$y1)
Data$y1[y1.na] <- (approx(Data$y1, rule=2, n=NROW(Data))$y)[y1.na]

关于r - 按近似列值合并数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922281/

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