0

以下に示す変数と値を含むデータセットを使用しています。各国の 2004 年以前の最新の選挙投票率 (electoral1 に格納されている) を 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 に答える