嗨,這是我第一篇文章,以stackoverflow。我一直在試圖解決這個問題,但一直沒有能夠找出答案,也沒有找到其他職位回答這個問題。根據兩個條件用另一個數據框的值替換數據幀中的NaN
我需要用我的數據集中的缺失值替換另一個數據幀中的值;然而,在那裏它變得棘手的是,我需要匹配的值有與他們相關的另一個因素,但匹配的日期。
這是第一個數據幀的簡化版本:
> df1
date site Value
1991-07-08 A 22.5
1991-07-09 A NaN
1992-07-13 B 23.1
1992-07-14 A NaN
1993-07-07 B 27.3
這裏是第二個數據幀的簡化版本:
> df2
date site value
1991-07-08 A 22.5
1991-07-09 A NaN
1992-07-14 A NaN
1991-07-08 B 10.6
1992-07-09 B 23
1992-07-14 B NaN
1992-07-09 C 11.3
1992-07-14 C 12.4
我想要做的是什麼時,有一個缺失值對於A用B的值(具有相同的日期)替換它,並且如果B沒有值,則使用C的值(具有相同的日期)。因此,所產生的數據幀是這樣的:
> dfFIN
date site Value
1991-07-08 A 22.5
1991-07-09 A 23
1992-07-13 B 23.1
1992-07-14 A 12.4
1993-07-07 B 27.3
這就是我來了這麼遠:
dfFIN<-replace(df1[which(df1$site=="A"),],
df1$value[which(df$value=="NaN")],
df2$value[which(df2$site=="B" &
df2$date==df1$date[which(df1$value=="NaN" & df1$site=="A")])])
不過,我得到了以下錯誤消息:
Error in [<-.data.frame(*tmp*, list, value = numeric(0)) :
missing values are not allowed in subscripted assignments of data frames
我還沒有合併網站C.我不太確定該做什麼,並希望得到任何幫助。
您需要使用'is.nan',而不是試圖'== 「南」' - 'NaN'是一個特殊值代表無限值。 – thelatemail