10

私は、欠落数値が無限に設定されている SAS から R に来ました。したがって、次のように言えます。

positiveA = A > 0;

R では、次のように冗長にする必要があります。

positiveA <- ifelse(is.na(A),0, ifelse(A > 0, 1, 0))

この構文は読みにくいと思います。とにかく ifelse 関数を変更して NA をすべての比較条件で常に false である特別な値と見なすことはできますか? そうでない場合は、NA を -Inf と見なしても機能します。

同様に、文字変数の ifelse ステートメントで NA を '' (空白) に設定します。

ありがとう。

4

5 に答える 5

10

値をゼロに置き換えることは、NA期待するのはかなり奇妙な動作のようです。R値が欠落していると見なしNAます(ただし、(決して)行く必要がない舞台裏のはるか後ろに隠されていますが、数値の場合、それらは負の非常に大きな数値です))

あなたがする必要があるのはA>0、またはas.numeric(A>0)0,1がTRUEではなく、FALSEが必要な場合です

# some dummy data
A <- seq(-1,1,l=11)
# add NA value as second value
A[2] <- NA
positiveA <- A>0
positiveA
 [1] FALSE    NA FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

 as.numeric(positiveA) # 
 [1]  0 NA  0  0  0  0  1  1  1  1  1

それも機能することに注意してください ifelse(A>0, 1,0)

NA値は「保持」されるか、適切に処理されます。Rここは賢明です。

于 2012-11-28T05:44:49.247 に答える
2

これを試して:

positiveA <- ifelse(!is.na(A) & A > 0, 1, 0)
于 2014-05-02T08:11:54.680 に答える
1

不足している引数 iif_else_hablar次のように使用できます。

library(hablar) 

x <- c(NA, 1, 0, -1)

if_else_(x > 0, T, F, missing = F)

あなたに与える

[1] FALSE  TRUE FALSE FALSE
于 2019-06-10T21:07:24.877 に答える