簡體   English   中英

如何計算R中未對齊的數據幀列的平均值

[英]How to compute the mean of data frames columns that are not aligned in R

我有兩個具有相同列名稱x和y的數據框。

兩者都存儲數據y = f(x),但x值未對齊。

我想要的是計算第三個數據幀,該數據幀將提供兩個數據幀(它們相交的位置)的平均值。

有沒有辦法在R中做到這一點?

這是帶有兩個正弦曲線的示例代碼。 我正在尋找的是“平均值曲線”,在此示例中應為sin(x)+ 0.1。 在現實生活中,我想對實際數據執行操作。

x1 <- seq(1, 10, by = 0.1)
x2 <- seq(0.5, 9.5, by = 0.11)
y1 <- sin(x1) + 0.2
y2 <- sin(x2)
df1 <- data.frame(x = x1, y = y1)
df2 <- data.frame(x = x2, y = y2)

df.combined <- rbind(df1, df2)
df.combined$id <- factor(rep(1:2, c(length(x1), length(x2))))

ggplot(data = df.combined, aes(x, y, colour = id)) + geom_line()

對於真實數據,我將為兩條曲線建立模型(例如,采用loess法),計算所有點上兩個模型的值,然后計算均值。

df<-merge(df1,df2,by="x",all = TRUE) 

mod1<-loess(y1 ~ x1,span=0.4)
mod2<-loess(y2 ~ x2,span=0.4)
df$fitmod1<-predict(mod1,df$x)
df$fitmod2<-predict(mod2,df$x)
df$mid<-(df$fitmod1+df$fitmod2)/2

ggplot(df,aes(x=x))+geom_line(aes(y=fitmod1),color="red")+
geom_line(aes(y=fitmod2),color="green")+geom_line(aes(y=mid),color="black")

當然,使用loess或其他物質在很大程度上取決於數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM