2016-04-10 6 views
-2

誰にでも求められる助け。条件を満たす変数を作成する

私は世帯調査データセットh2004を所有しており、特定の条件を満たす別の変数と同じ変数を作成したいと考えています。ここでは、観測のサンプルを入れました。

cq15  expen 
10  0.4616136 
10  1.538712 
11  2.308068 
11  0.384678 
12  2.576797822 
12  5.5393632 
13  5.4624276 
14  2.6158104 
14  20.157127 

と私は、次のコマンドを試してみました:

h2004$crops[h2004$cq15>=12 & h2004$cq15<=14]=h2004$expen 

を、私はのStataを使用してから、正しい結果を知っているように、これはRで間違った結果を生成します。元のデータセットでは、上記のコマンドはcq15<12の場合でも「expen」の値をとり、観測値をcq15>=12 & cq15<=14に置き換えます。

また、データフレームを正しくサブセット化して特定の変数に適用する方法がわからないdplyrのフィルタオプションを試しました。

fil<- filter(h2004, cq15>=12 & cq15<=14)

私は私のサブセット(cq15>=12 & cq15<=14)が間違っていると思います。ご意見をお聞かせください。ありがとう

答えて

0

問題はコマンドです。コマンドが実行されると、次の警告メッセージが出される:

Warning message: 
    In h2004$crops[h2004$cq15 >= 12 & h2004$cq15 <= 14] = h2004$expen : 
    number of items to replace is not a multiple of replacement length 

この理由は、このコマンドのLHS条件H2004 $ cq15> = 12 & H2004 $ cq15 < = 14を満たす要素を選択することですRHSでは、完全なベクターh2004 $ expenが与えられ、長さの不一致が生じる。

ソリューション:

> h2004$crops[h2004$cq15>=12 & h2004$cq15<=14]=h2004$expen[h2004$cq15>=12 & h2004$cq15<=14] 

> h2004 
    cq15  expen  crops 
1 10 0.4616136  NA 
2 10 1.5387120  NA 
3 11 2.3080680  NA 
4 11 0.3846780  NA 
5 12 2.5767978 2.576798 
6 12 5.5393632 5.539363 
7 13 5.4624276 5.462428 
8 14 2.6158104 2.615810 
9 14 20.1571270 20.157127 

。あるいは:

> indices <- which(h2004$cq15>=12 & h2004$cq15<=14) 
> h2004$crops[indices] = h2004$expen[indices] 
> h2004 
    cq15  expen  crops 
1 10 0.4616136  NA 
2 10 1.5387120  NA 
3 11 2.3080680  NA 
4 11 0.3846780  NA 
5 12 2.5767978 2.576798 
6 12 5.5393632 5.539363 
7 13 5.4624276 5.462428 
8 14 2.6158104 2.615810 
9 14 20.1571270 20.157127 
+1

どうもありがとうございました。これは完全に機能します。 –

関連する問題