Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部分合并两个数据集并在R中填充NAs_R_Merge_Dplyr_Na_Missing Data - Fatal编程技术网

部分合并两个数据集并在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)