首页 > 解决方案 > 根据数据框 B 中的信息,在数据框 A 的列中填写 TRUE/FALSE

问题描述

我搜索了其他主题,但没有找到任何与我正在寻找的内容真正匹配的内容。

我的数据框:

UN_match摘抄:

country country_code   emissions sector_code     year
Austria           AT  65779.1172        1.AA     2005
Austria           AT  62430.4336        1.AA     2006
Austria           AT  59108.4180        1.AA     2007
Austria           AT  58656.6719        1.AA     2008
Austria           AT  55252.9922        1.AA     2009
Austria           AT  58317.9570        1.AA     2010
Austria           AT  55898.7344        1.AA     2011
Austria           AT  53886.8242        1.AA     2012
Austria           AT  53923.7578        1.AA     2013
Austria           AT  50087.0000        1.AA     2014
Austria           AT  51978.9609        1.AA     2015
Austria           AT  52990.2305        1.AA     2016
Belgium           BE 103917.1484        1.AA     2005
Belgium           BE 102263.9297        1.AA     2006
Belgium           BE 100104.8906        1.AA     2007
Belgium           BE  99960.6328        1.AA     2008
Belgium           BE  92900.2188        1.AA     2009
Belgium           BE  96538.8047        1.AA     2010
Belgium           BE  87202.2188        1.AA     2011
Belgium           BE  86242.7656        1.AA     2012
Belgium           BE  86289.1562        1.AA     2013
Belgium           BE  80720.1406        1.AA     2014
Belgium           BE  84283.8438        1.AA     2015
Belgium           BE  84081.2031        1.AA     2016

ETS_match

     country country_code     value year smaller1.AA
     Austria           AT  16539.659 2005           0
     Austria           AT  15275.065 2006           0
     Austria           AT  14124.646 2007           0
     Austria           AT  14572.511 2008           0
     Austria           AT  12767.555 2009           0
     Austria           AT  15506.112 2010           0
     Austria           AT  15131.551 2011           0
     Austria           AT  13121.434 2012           0
     Austria           AT   8074.514 2013           0
     Austria           AT   6426.135 2014           0
     Austria           AT   7514.263 2015           0
     Austria           AT   7142.937 2016           0
     Belgium           BE  25460.856 2005           0
     Belgium           BE  24099.282 2006           0
     Belgium           BE  23706.084 2007           0
     Belgium           BE  23166.180 2008           0
     Belgium           BE  21185.552 2009           0
     Belgium           BE  22073.616 2010           0
     Belgium           BE  18950.876 2011           0
     Belgium           BE  17463.388 2012           0
     Belgium           BE  16728.267 2013           0
     Belgium           BE  15230.243 2014           0
     Belgium           BE  16053.800 2015           0
     Belgium           BE  15027.777 2016           0

我想根据是真还是假来添加TRUE或添加。这应该对每一行进行。FALSEETS_match$smaller1.AAETS_match$value < UN_match$emissions

我自己用mutateand尝试了一些东西if_else,但没能完成。

它应该如下所示:

     country country_code     value year smaller1.AA
     Austria           AT  16539.659 2005       TRUE
     Austria           AT  15275.065 2006       TRUE
     Austria           AT  14124.646 2007       TRUE

我知道这可能是非常基本的,但我会很高兴任何形式的帮助。

最良好的祝愿,

北湖

标签: rdataframe

解决方案


像这样的东西dplyr,也许:

library(dplyr)
UN_match %>% left_join(ETS_match) %>%                                 # join the data
  mutate(smaller1.AA =  value < emissions, TRUE, FALSE) %>%           # add the true false
  select(country, country_code, value, year, smaller1.AA)             # only useful columns

But all your value are < of emission, so the data are rows are all TRUE in this case.

Improved removing if_else, thanks @Rui Barradas.


推荐阅读