2016-11-20 17 views
0

データフレーム内の2つの属性の値を置き換えます。 CheckInおよびCheckOutである。これらの2つの属性値のうちの1つが欠落している場合、 ' - 'はNAで置き換えてください。条件付きロジックを入れて関数を適用しようとしましたが失敗しました。最後に私はforループを使ってみました。Rの条件の値を置き換えます

for(i in length(Empl.A)){ 
if((Empl.A$CheckIn[i] == '--') & (Empl.A$CheckOut[i] == '--')) 
{ 
    Empl.A$CheckIn[i] <- NA 
    Empl.A$CheckOut[i] <- NA 
} 
} 

enter image description here

置き換える値にいくつかの有用なリソースに私を参照するか、問題のこれらの種類を解決するためにしてください。

+0

見て:それはのために'でなければなりません(I 1:今(Empl.A)) ' – mt1022

+2

ところで、あなたは、csvファイルからこのデータをすることができます読んでいる場合'na.strings =" - "'パラメータを 'read.csv()'に渡すことでこれを修正してください。 –

+0

@RSしかし、私はすべての ' - 'を置き換えることを望んでいません。 'checkIn'属性と' checkout'属性の両方にあるもののみ –

答えて

1

これをループに頼ることなくベクトル化して実現できます。 `for`サイクルのあなたの声明で

> xy <- data.frame(a = 1:3, ci = c("a", "--", "--"), co = c("b", "--", "--")) 
> xy 
    a ci co 
1 1 a b 
2 2 -- -- 
3 3 -- -- 
> xy[xy$ci == "--" & xy$co == "--", c("ci", "co")] <- NA 
> xy 
    a ci co 
1 1 a b 
2 2 <NA> <NA> 
3 3 <NA> <NA> 
+0

ありがとう。必要なものを手に入れました。 –

関連する問題