我一直試圖弄清楚整整一天的情況,但是我對循環的理解並不是最好的。 我基本上有3個數據幀。它們包含幾列。我想一次檢查每個數據幀。如果列中的一個值爲-9999(NA),我想用其他數據幀中的值替換它(如果第二個數據幀中的相同值也是-9999,則它應取第3個值)。R替換多個數據幀的多個列的值
我想通了,否則。我無法把它變成一個for循環。所以我必須手工輸入每個列,這需要很長時間,因爲我有很多列名稱奇怪的列。所以這裏是我的例子,以簡單的形式。也許有些人可以幫助我。非常感謝,王蓮香
par1 <- c(1,2,3,4)
par2 <- c(1,2,3,0)
par3 <- c(1,0,3,8)
par4 <- c(1,0,3,9)
r <- data.frame(par1, par2, par3, par4)
d <- data.frame(par1, par2, par3, par4)
b <- data.frame(par1, par2, par3, par4)
r$par1[4] <- -9999
gap_filling <- function(x,y,z){
ifelse (x == -9999,
ifelse(y==-9999, z, y),
x)
} ## this is the function I wrote to shorten it a little bit
r$par1 <- gap_filling(r$par1, d$par1, b$par1)
r$par2 <- gap_filling(r$par2, d$par2, b$par2)
r$par3 <- gap_filling(r$par3, d$par3, b$par3)
r$par4 <-gap_filling(r$par4, d$par4, b$par4)
### this is just the replacing for the first data frame. I need to do the same with the other two too
你可以做到這一點'data.frames '以及 –
'ifelse(r == -9999,ifelse(b == -9999,d,as.matrix(b)),as.matrix(r))'也可能有幫助。 –
非常好,我編輯的答案 - 謝謝@Jake :) – Jealie