0

我正在使用一个数据集,其中包括下面介绍的变量和值。我如何才能将 2004 年之前的最新选举投票率(存储在选举人 1 中)“复制”到每个国家的 2004 年。对于某些国家/地区,上次选举可以追溯到 2 年前,对于其他国家而言,可以追溯到 3、4、5... 我很感激任何提示。非常感谢,罗兰

Year    Nation  electoral1 (=turnout)
1994    Albania 
1995    Albania 
1996    Albania 
1997    Albania 730 
1998    Albania 
1999    Albania 
2000    Albania 
2001    Albania 600 => this should go to 2004
2002    Albania 
2003    Albania 
2004    Albania 
2005    Albania 
2006    Albania 
1994    Algeria 
1995    Algeria 
1996    Algeria 
1997    Algeria 656
1998    Algeria 
1999    Algeria 
2000    Algeria 
2001    Algeria 
2002    Algeria 462 => this should go to 2004
2003    Algeria 
2004    Algeria 
2005    Algeria 
2006    Algeria 
4

1 回答 1

0

我假设丢失的数据由NA

首先,获取您的数据框:

df = myDataFrame    

然后,编写一个获取特定国家最新选举数据的函数

getLatestElecdata = function(Nation,df){
NationIndexes = which(df$Nation == Nation)
elec_by_year = data.frame(Year = df$Year[NationIndexes],electoral1= df$electoral1[NationIndexes])
elec_by_year = elec_by_year[ order(-elec_by_year[,1]), ]
getLatestElec = elec_by_year[which(!is.na(elec_by_year[,2]))[1],2]
return(getLatestElec)
}

现在,对于每个 2004 年的条目,获取最新数据

2004indexes = which(df[,1]==2004)

for(i in 2004indexes){
df[i,3] <- getLatestElecdata(df[i,2],df)
}

这应该可以解决您的问题。

于 2013-03-29T05:03:19.247 回答