2016-04-01 7 views
-1

パネルデータの2つの値が動く違いがある新しい行を作成しようとしています。R:移動差分変数を作成する

私のデータは次のようになります。

party_id year country position vote 
    101 1984  be  2.75 2.3 
    101 1988  be  2.75 0.8 
    101 1992  be  3.33 0.1 
    101 1996  be  3.67 0.1 
    102 1984  be  5.80 12.6 
    102 1988  be  5.80 15.7 

私は2つの異なる年の投票のシェアの違いを示した行をしたい:例えば1988年と1984年に投票率の変化を示している。

party_id year country position vote vote_difference 
    101 1984  be  2.75 2.3 NA 
    101 1988  be  2.75 0.8 -1.5 
    101 1992  be  3.33 0.1 -0.7 
    101 1996  be  3.67 0.1 0.0 
    102 1984  be  5.80 12.6 NA 
    102 1988  be  5.80 15.7 3.1 

任意のアイデア:

だから私のデータは次のようになりますか? data.table使用についてのヘルプ

+0

あなたは十分に特異的ではないです。あなたの出力は、あなたに投票の差を求めていることを示唆しています_within party_;それは国の中にもありますか? – MichaelChirico

+0

パーティー内の投票の差異 – snn

+0

'aggregate()'や 'ddply()'と一緒に 'diff()'を使ってみましたか? – Badger

答えて

1

party_idによってグループ化voteに指示関数を適用する基地Rソリューションで

party_id year country position vote diff 
1  101 1984  be  2.75 2.3 NA 
2  101 1988  be  2.75 0.8 -1.5 
3  101 1992  be  3.33 0.1 -0.7 
4  101 1996  be  3.67 0.1 0.0 
5  102 1984  be  5.80 12.6 NA 
6  102 1988  be  5.80 15.7 3.1 

注:再現可能な形で入力DFは次のとおりです。

Lines <- "party_id year country position vote 
    101 1984  be  2.75 2.3 
    101 1988  be  2.75 0.8 
    101 1992  be  3.33 0.1 
    101 1996  be  3.67 0.1 
    102 1984  be  5.80 12.6 
    102 1988  be  5.80 15.7 " 
DF <- read.table(text = Lines, header = TRUE) 
1

ため

ありがとう:

transform(DF, diff = ave(vote, party_id, FUN = function(x) c(NA, diff(x)))) 

与える:ここ

library(data.table); setDT(data) 

data[ , vote_difference := diff(vote), by = party_id] 
関連する問題