2016-11-20 58 views
0

我想o替換數據框中兩個屬性的值。 CheckInCheckOut。 ' - '應該被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

看看你的'for'循環語句:它應該是'爲(我在1:現在(Empl.A))' – mt1022

+2

順便說一句,如果你是從一個CSV文件中讀取這些數據,你可以通過將'na.strings =「 - 」'參數傳遞給'read.csv()'來解決這個問題。 –

+0

@RS但我不希望所有' - '都被替換。只有'checkIn'和'checkout'屬性中的那些屬性 –

回答

1

你可以通過矢量化的方式實現這一點,而不必訴諸於循環。

> 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

非常感謝。有什麼需要。 –