同僚のStataコードを見直しながら、私はコマンドexpand
を見つけました。Stataの展開に相当するR
私は自分のRコードで同じことをすることができて本当に大好きです。
本質的にexpand
は、データセットをn回複製しますが、新しい変数を作成するオプションがあります。観測値が元々データセットに表示された場合は0、観測値が複製の場合は1です。
Rでこれを実装する簡単な方法を知っている人はいますか?それとも私自身の関数を書いたのでしょうか?
同僚のStataコードを見直しながら、私はコマンドexpand
を見つけました。Stataの展開に相当するR
私は自分のRコードで同じことをすることができて本当に大好きです。
本質的にexpand
は、データセットをn回複製しますが、新しい変数を作成するオプションがあります。観測値が元々データセットに表示された場合は0、観測値が複製の場合は1です。
Rでこれを実装する簡単な方法を知っている人はいますか?それとも私自身の関数を書いたのでしょうか?
rep_r<-function(x,n){if(n<=1){rep(x,times=1)}else{rep(x,times=n)}}
expand_r<-function(x,n){
Reduce(function(x,y)
{c(x,y)},mapply(rep_r,x,n))
}
expand_r(c(2,3,4,1,5),c(-1,0,1,2,3))
#[1] 2 3 4 1 1 5 5 5
EDIT:@nicolaから提案のおかげで上記の機能は、単に次のワンライナーによって達成することができます。
expand_r<-function(x,n) rep(x,replace(n,n<1,1))
#>expand_r(c(2,3,4,1,5),c(-1,0,1,2,3))
#[1] 2 3 4 1 1 5 5 5
'R'で' rep() 'を探します。しかし、stataの展開関数の正確な複製を得るために、それを微調整する必要があるかもしれません。小さなデータサンプルと期待される出力を分かち合うことができれば、確かに良い答えが得られます。 – TUSHAr
Rユーザーのためのアクセシブルなドキュメントを提供することをお勧めします。 https://www.stata.com/manuals/dexpand.pdf StataとRを使用していることから、これがドキュメントに目を通すことから得られることは、多くの人が理解するでしょう。 –
チップと編集のおかげで – Esther