根据几个参数填充一列
Filling in a column according to several arguments
一个例子胜过一千个字:
> head(regi_T)
Date Qobs Ptot Fsol Temp PE Q_mm J JY
62 1957-01-01 0.003 0.0 -99 -7.0 0.0 1.039 01-01 001
63 1957-01-02 0.002 0.8 -99 -11.0 0.0 0.926 02-01 002
64 1957-01-03 0.002 0.0 -99 -7.0 0.0 0.907 03-01 003
65 1957-01-04 0.002 0.0 -99 3.0 0.5 0.879 04-01 004
66 1957-01-05 0.002 1.3 -99 -1.0 0.2 0.746 05-01 005
67 1957-01-06 0.002 9.9 -99 -0.5 0.3 0.642 06-01 006
> head(regime_T)
j x
1 001 -1.0150943
2 002 -1.7000000
3 003 -0.8830189
4 004 -1.4452830
5 005 -2.3566038
6 006 -1.3603774
我需要根据天数填写 Regi_T$Temp
列 WHEN 它等于 NA BY regime_T$x
(所以 regi_T$JY
和 regime_T$j
)。
示例:regi_T
的第 110 天有一个 NA,我需要获取 regime_T
的第 110 天的值,并用这个新值替换 NA。
有人有想法吗?
我试过如下:
id <- which(is.na(regi_T$Temp))
day.na <- regi_T[id,9]
id_temp <- which(regime_T$j==day.na)
regime_T[day.na,2]
这是一种工作,但我的结果中有 NA(见开头下方),我不知道它们来自哪里....
[1] -0.6811321 -0.9773585 5.0867925 5.0867925 6.8547170 NA -6.8153846 17.5433962 17.2622642 17.1792453
非常感谢您的帮助!
也许是这样的:
library(dplyr)
regi_T %>%
left_join(regime_T, by = c('JY' = 'j')) %>%
mutate(nas_replaced = coalesce(T, x))
然后您可以使用 select
来仅获取您想要的列。 coalesce
使用给定参数中的第一个非 na 值。
一个例子胜过一千个字:
> head(regi_T)
Date Qobs Ptot Fsol Temp PE Q_mm J JY
62 1957-01-01 0.003 0.0 -99 -7.0 0.0 1.039 01-01 001
63 1957-01-02 0.002 0.8 -99 -11.0 0.0 0.926 02-01 002
64 1957-01-03 0.002 0.0 -99 -7.0 0.0 0.907 03-01 003
65 1957-01-04 0.002 0.0 -99 3.0 0.5 0.879 04-01 004
66 1957-01-05 0.002 1.3 -99 -1.0 0.2 0.746 05-01 005
67 1957-01-06 0.002 9.9 -99 -0.5 0.3 0.642 06-01 006
> head(regime_T)
j x
1 001 -1.0150943
2 002 -1.7000000
3 003 -0.8830189
4 004 -1.4452830
5 005 -2.3566038
6 006 -1.3603774
我需要根据天数填写 Regi_T$Temp
列 WHEN 它等于 NA BY regime_T$x
(所以 regi_T$JY
和 regime_T$j
)。
示例:regi_T
的第 110 天有一个 NA,我需要获取 regime_T
的第 110 天的值,并用这个新值替换 NA。
有人有想法吗?
我试过如下:
id <- which(is.na(regi_T$Temp))
day.na <- regi_T[id,9]
id_temp <- which(regime_T$j==day.na)
regime_T[day.na,2]
这是一种工作,但我的结果中有 NA(见开头下方),我不知道它们来自哪里....
[1] -0.6811321 -0.9773585 5.0867925 5.0867925 6.8547170 NA -6.8153846 17.5433962 17.2622642 17.1792453
非常感谢您的帮助!
也许是这样的:
library(dplyr)
regi_T %>%
left_join(regime_T, by = c('JY' = 'j')) %>%
mutate(nas_replaced = coalesce(T, x))
然后您可以使用 select
来仅获取您想要的列。 coalesce
使用给定参数中的第一个非 na 值。