RでNAのが含まれているもう一つの要因に基づいてデータフレームの値を交換してください

StackOverflow https://stackoverflow.com/questions/2553108

  •  23-09-2019
  •  | 
  •  

質問

私は(とりわけ)濃度の数値列、およびステータスフラグを持つ因子列を含むデータフレームを持っています。このステータスフラグは、NAのが含まれています。

ここでは例があります。

df<-structure(list(conc = c(101.769, 1.734, 62.944, 92.697, 25.091, 27.377, 24.343, 55.084, 0.335, 23.280), status = structure(c(NA, NA, NA, NA, NA, NA, 2L, NA, 1L, NA), .Label = c("<LLOQ", "NR"), class = "factor")), .Names = c("conc", "status"), row.names = c(NA, -10L), class = "data.frame")

Iフラグ列のいくつかの値の文字列を有する、または有効数字の特定の数にフォーマットされた濃度値との濃度列を置換する。

私はこの

をしようとすると
ifelse(df$status=="NR","NR",df$conc)

NAのステータスフラグにtrueまたはfalseの状態トリガ(およびNAを返す)していない - ドキュメントは、それは意志通り。私ができるの行とそれぞれの場合、それ以外の使用をループが、これは非効率です。

アム私は何かが足りませんか?私は仕事をしないだけでなくとして($状態DF)as.characterを試みました。私のモジョを取得する必要があり、低...

役に立ちましたか?

解決

の代わりに%in%の使用==ます:

ifelse(df$status %in% "NR","NR", df$conc)

の二つの方法のサイドバイサイド比較

data.frame(df, ph = ifelse(df$status=="NR","NR",df$conc), mp = ifelse(df$status %in% "NR","NR",df$conc))
詳細については?matchをチェックしてください - 。私は確信して、私はそれをうまく説明できないんだけど。

他のヒント

あなたはNAの明示的なテストを使用することができなければなりませんのでます:

ifelse(df$status=="NR" | is.na(df$status),"NR",df$conc) # gives you NR for NA

または

ifelse(df$status=="NR" & !is.na(df$status),"NR",df$conc) # gives you df$conc for NA

どのようにmissingnessのためのテストに関するます:

ifelse(is.na(df$status), df$conc, as.character(df$status))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top