3つの数値スコア変数(New、Middle、Old)を持つデータフレーム(df)があります。NewとMiddle(Diff1)の間、およびNewとOld(Diff2)の間の差分スコアを計算する必要があります。中間スコアがNAの場合、両方の差異スコアはNAである必要があります。差スコアは新しい変数に入れられます
違い1は簡単です。DIFF1 <-New –Middle常に正しい答えを出します。
差異2は、(1)中間スコアが存在する場合、または中間スコアがNAであり、最新または最も古いスコアもNAである場合に正しく機能します。
中央のスコアがNAで、最も古いスコアと最も新しいスコアが存在する場合、差2は常に数値です。差2をNAにすることはできません。
変数に名前を付ける(たとえば、df $ New)と、考えられるブラケットのすべての順列を試しましたが、成功しませんでした。<-の代わりに==と=を使用してみました。また、(Rcmdrを使用して)NAと思われる変数が実際にはNAであることを確認しました。
データ内
Old Middle New
2483 NA 585
コード
Ifelse (is.na(df[,"Middle"]),
(df[,"Diff2"] <- NA ),
(df[,"Diff2"] <- with(df,New - Old)))
実際の出力データ
Diff1(New – Middle) Diff2(New – Old)
NA -1898
必要な出力データ
Diff1(New – Middle) Diff2(New – Old)
NA NA
コードをifelse
に変更できます
df$Diff2 <- with(df, ifelse(is.na(Middle), NA_real_, New - Old))
<-
内の割り当て()ifelse
は単一の割り当てに置き換えられる(機能しない)ことに注意してください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加