首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于DF1的基于DF2的变异检测

基于DF1的基于DF2的变异检测
EN

Stack Overflow用户
提问于 2020-04-12 20:04:07
回答 1查看 37关注 0票数 1

这里有个数据/变异问题..。我想根据另一个数据(df2)中的数据更新一个数据( dataframe,df2)。首先,我使用了变体,所以我认为这是可行的方法。另外,我希望添加一个检查函数(真/假?)指示是否更新了df1中的字段。

例如..。

代码语言:javascript
复制
df1-
 State
   <chr>
 1 N.Y. 
 2 FL   
 3 AL   
 4 MS   
 5 IL   
 6 WS   
 7 WA   
 8 N.J. 
 9 N.D. 
10 S.D. 
11 CALL 

df2
State New_State   
   <chr> <chr>       
 1 N.Y.  New York    
 2 FL    Florida     
 3 AL    Alabama     
 4 MS    Mississippi 
 5 IL    Illinois    
 6 WS    Wisconsin   
 7 WA    Washington  
 8 N.J.  New Jersey  
 9 N.D.  North Dakota
10 S.D.  South Dakota
11 CAL   California 

我希望输出结果像这样

代码语言:javascript
复制
df3
New_State          Test
  <chr>         
 1 New York        TRUE
 2 Florida         TRUE
 3 Alabama         TRUE
 4 Mississippi     TRUE
 5 Illinois        TRUE
 6 Wisconsin       TRUE
 7 Washington      TRUE
 8 New Jersey      TRUE
 9 North Dakota    TRUE
10 South Dakota    TRUE
11 CALL            FALSE

本质上,我希望R读取df1中的数据,并根据df2链接中的匹配更改df1,并将其链接到完整的状态名称和替换。最后,如果df1中的数据被更新,则标记为"TRUE“(纽约到纽约),如果没有更新,则标记为"FALSE”(CALL vs CAL)

提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 21:40:20

这应该会给你你想要的结果:

代码语言:javascript
复制
match_vec <- match(df1$State, table = df2$State)

该向量应该匹配df1中的所有缩写状态名称和df2中的缩写状态名称。在没有匹配的地方,您将得到一个丢失的值:

然后,以下使用dplyr的代码将生成所请求的df3

代码语言:javascript
复制
library(dplyr)
df3 <- df1 %>% 
  mutate(New_State = df2$New_State[match_vec]) %>% 
  mutate(Test = !is.na(match_vec)) %>% 
  mutate(New_State = ifelse(is.na(New_State), 
                            State, New_State)) %>% 
  select(New_State, Test)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61177424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档