我已经阅读了现有的主题,但是我没有读过与我想做的事情相符的事情。
数据框1:newdata(摘录)
country year sector emissions
Austria 1990 Total 6.229223e+04
Austria 1990 Regulated 3.826440e+04
Austria 1990 Unregulated 2.402783e+04
Austria 1991 Total 6.589968e+04
Austria 1991 Regulated 3.931820e+04
Austria 1991 Unregulated 2.658148e+04
数据框2:EUETS(摘录)
country year emissions
Austria 2005 164925659
Belgium 2005 282762153
Croatia 2005 0
Cyprus 2005 16021583
Czech Republic 2005 288986144
Denmark 2005 171815416
Estonia 2005 71336242
我想做什么:
EUETS$emissions
添加到新列newdata$EUETS
newdata$sector = "regulated"
newdata$sector = "unregulated"
和newdata$sector = "Total"
需要接收NA
,在任何情况下都0
EUETS$country
和/或EUETS$year
中没有相应的信息,则应将NA
插入newdata$EUETS
EUETS$emissions
中有信息,但在newdata
中没有与此匹配的年份和/或国家,则将为此信息创建一个新行,并填充EUETS
中的值如上所述,但是在NA
和newdata$emissions = Total
的新单元格中插入newdata$unregulated
。这应该看起来像这样:
country year sector emissions EUETS
Austria 1990 Total 6.229223e+04 NA
Austria 1990 Regulated 3.826440e+04 2516843
Austria 1990 Unregulated 2.402783e+04 NA
Austria 1991 Total 6.589968e+04 NA
Austria 1991 Regulated 3.931820e+04 446656
Austria 1991 Unregulated 2.658148e+04 NA
Liechtenstein 2005 Total NA NA
Liechtenstein 2005 Regulated NA 654612641
Liechtenstein 2005 Unregulated NA NA
列支敦士登只是在EUETS$country
中,而在newdata$country
中却不存在,因此被添加到后者的数据框中。
这可能是几个问题/合一,但我希望这里合适。我尝试了一些事情,但在将值填充到newdata的现有列(国家和年份)中时,尤其麻烦。
我非常感谢您完成此任务的任何部分。
非常感谢!
Nordsee
答案 0 :(得分:2)
首先,更改EUETS列的名称和扇区,使其最终显示出来:
names(EUETS)[3] = "EUETS"
EUETS$sector = "Regulated"
确保您原来的扇区列是一个字符,而不是一个因素:
newdata$sector = as.character(newdata$sector)
合并数据
result = merge(newdata, EUETS, all = TRUE)
要将未代表国家/地区重新添加到EUETS
中,我不确定您要添加什么year
和emissions
值,因此我暂时将其忽略。但基本上您想再次使用merge
。