2

別の変数の値に応じて、正の値(比率)を同じ変数の負の値に変換する便利な方法を探しています。

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

id Item Var1  Freq 
1  P1   0    0.043
2  P2   1    0.078
3  P3   2    0.454
4  P4   3    0.543
5  T1   0    0.001
6  T2   1    0
7  T3   2    0.045
8  T4   3    0.321
9  A1   0    0.671
...

より正確には、Var1 <= 1(例:-0.043)の場合、Freqの数値を負にしたいと思います。

これは私が試したものです:

for(i in 1: 180) {
if (mydata$Var1 <= "1") (mydata$Freq*(-1))}

また

mydata$Freq[mydata$Var1 <= "1"] = -abs(mydata$Freq)}

どちらの場合も、負の符号は正しく設定されていますが、数値も変更されています。

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

4
new.Freq <- with(mydata, ifelse(Var1 <= 1, -Freq, Freq))
于 2012-08-17T14:40:32.750 に答える
3

試す:

index <- mydata$Var1 <= 1
mydata$Freq[index] = -abs(mydata$Freq[index])

試行したコードには2つのエラーがあります。

  • あなたは書くことによって文字比較をしましたx <= "1"-これは数値比較でなければなりません、すなわちx <= 1
  • ベクトルのサブセットを置き換えていますが、置き換えと同じサブセットを参照していません
于 2012-08-17T14:40:57.227 に答える
0

また、1つが負の値を持ち、負の値を保持することによってそれを組み合わせたい場合に2つの変数を処理するために使用することもできます。同様に、変数の先頭に-を置くことによって負の値に変換するために使用できます(前述のとおり)。

mydata$new_Freq <- with(mydata, ifelse(Var1 < 0, Low_Freq, Freq))


id Item Var1  Freq  Low_Freq
1  P1   0    1.043  -0.063
2  P2   1    1.078  -0.077 
3  P3   2    2.401  -0.068  
4  P4   3    3.543  -0.323
5  T1   0    1.001   1.333
6  T2   1    1.778   1.887 
7  T3   2    2.045   1.011
8  T4   3    3.321   1.000
9  A1   0    4.671   2.303



# Output would be:

id Item Var1  Freq  Low_Freq   new_Freq
1  P1   0    1.043  -0.063     -0.063
2  P2   1    1.078  -0.077     -0.077
3  P3   2    2.401  -0.068     -0.068
4  P4   3    3.543  -0.323     -0.323
5  T1   0    1.001   0.999      1.001
6  T2   1    1.778   0.887      1.778
7  T3   2    2.045   1.011      2.045
8  T4   3    3.321   1.000      3.321
9  A1   0    4.671   2.303      4.671
于 2018-05-24T13:28:15.533 に答える