部分合并两个数据集并在R中填充NAs
我有两个数据集部分合并两个数据集并在R中填充NAs,r,merge,dplyr,na,missing-data,R,Merge,Dplyr,Na,Missing Data,我有两个数据集 a=包含数千个不同天气事件观测值的原始数据集 STATE EVTYPE 1 AL WINTER STORM 2 AL TORNADO 3 AL TSTM WIND 4 AL TSTM WIND 5 AL TSTM WIND 6 AL HAIL 7 AL HIGH WIND 8 AL TSTM WIND 9 AL TSTM WIND
a
=包含数千个不同天气事件观测值的原始数据集
STATE EVTYPE
1 AL WINTER STORM
2 AL TORNADO
3 AL TSTM WIND
4 AL TSTM WIND
5 AL TSTM WIND
6 AL HAIL
7 AL HIGH WIND
8 AL TSTM WIND
9 AL TSTM WIND
10 AL TSTM WIND
b
=字典表,对某些天气事件具有标准拼写
EVTYPE evmatch
1 HIGH SURF ADVISORY <NA>
2 COASTAL FLOOD COASTAL FLOOD
3 FLASH FLOOD FLASH FLOOD
4 LIGHTNING LIGHTNING
5 TSTM WIND <NA>
6 TSTM WIND (G45) <NA>
填写缺失的NAs
正如您在df_new$evmatch
中看到的,有一个NAs。如何合并数据集,但让evmatch
中的所有NA由EVTYPE
中的相应单词填充。例如
想要的产出
对问题的评论中给出的答案: 1:使用基本R 方法1:
df_new$evmatch <- with(df_new, ifelse(is.na(evmatch), EVTYPE, evmatch))
3:使用dplyr
库(dplyr)
过滤器(df_新,is.na(evmatch)%%>%
选择(evmatch)%
选择(EVTYPE)
看起来像是一个简单的ifelse(is.na(evmatch),EVTYPE,evmatch)
,否?或者我是否遗漏了一些东西。或者使用base-in.With数据表这可能是setDT(df_-new)[is.na(evmatch),evmatch:=EVTYPE]
或者df_-new$evmatch[is.na(df_-new$evmatch]dplyr版本:filter(df_-new,is.na(evmatch)%%select(evmatch)%select(EVTYPE)
…但老实说,我可能会使用上面的ifelse
版本。运行ifelse
时,返回一个错误对象“evmatch”未找到。在ifelse
中,您需要使用df\u new$evmatch
,您可能应该将其转换为社区wiki答案。
STATE EVTYPE evmatch
1 AL WINTER STORM WINTER STORM
2 AL TORNADO TORNADO
3 AL TSTM WIND THUNDERSTORM WIND
4 AL TSTM WIND THUNDERSTORM WIND
5 AL TSTM WIND THUNDERSTORM WIND
6 AL HAIL HAIL
7 AL HIGH WIND HIGH WIND
8 AL TSTM WIND THUNDERSTORM WIND
9 AL TSTM WIND THUNDERSTORM WIND
10 AL TSTM WIND THUNDERSTORM WIND
11 AL HEAVY RAIN HEAVY RAIN
12 AL FLASH FLOOD FLASH FLOOD
13 AL TSTM WIND THUNDERSTORM WIND
14 AL HEAVY RAIN HEAVY RAIN
15 AL TSTM WIND THUNDERSTORM WIND
df_new$evmatch <- with(df_new, ifelse(is.na(evmatch), EVTYPE, evmatch))
df_new$evmatch[is.na(df_new$evmatch] <- df_new$EVTYPE[is.na(df_new$evmatch]
library(data.table)
setDT(df_new)[is.na(evmatch), evmatch := EVTYPE]
library(dplyr)
filter(df_new, is.na(evmatch) %>%
select(evmatch) <- filter(df_new, is.na(evmatch) %>%
select(EVTYPE)