2012-03-05 85 views
3

這裏是我的數據幀的一個片段:NA的如何轉換在大型數據集爲0或1?

MemberID  Specialty     Surgery   Internal 
1 42286978  Surgery      NA    NA 
2 97903248  Internal      NA    NA 
3 2759427  Internal      NA    NA  
4 73570559  Surgery      NA    NA 

在列手術內我想與0或1,1是肯定的,0是無以取代的NA的。這是一個非常大的數據集,我寧願使用r內的工具或函數來執行此操作。

下表是我希望達到的目標。

MemberID Specialty     Surgery   Internal 
1 42286978  Surgery      1    0 
2 97903248  Internal      0    1 
3 2759427  Internal      0    1 
4 73570559  Surgery      1    0 

我將不勝感激任何幫助。

回答

5

假設您的數據框被命名爲dfrm,你的意思是這樣嗎?

dfrm$Surgery <- ifelse(dfrm$Specialty=="Surgery", 1, 0) 
dfrm$Internal <- ifelse(dfrm$Specialty=="Internal", 1, 0) 
4

假定這是一個數據幀命名DFRM

dfrm$Surgery <- 0 + (dfrm$Specialty=="Surgery") 
dfrm$Internal <- 0 + (dfrm$Specialty=="Internal") 
+3

我有一個輕微的偏愛'as.numeric(X)'到計算機科學棘手的'0 + x'強迫到數字......我想一些涉及'model.matrix(〜特長-1,數據= DFRM)'可能工作太(這將是更具有多個類別的更有價值) – 2012-03-05 22:19:54

+0

也許我們應該在我們的工作空間定義一個'%0/1%'二元函數? – 2012-03-05 22:32:09

0

我建議先從單獨MemberIDSpecialty,並使用一些ifelse語言。

如果手術和內部相互排斥,您只需要一個新變量,因爲第二個變量會給出完全相同的信息(無論醫生是外科醫生還是內科實踐)。

讓您的數據data.frame稱爲specialty.data,並嘗試這個辦法:

specialty.data$Surgery <- ifelse(specialty.data$Specialty == "Surgery", 1, 0) 

希望這有助於!

+3

這和chl的答案有什麼不同嗎? – joran 2012-03-05 22:28:58

+0

這個作品非常好,謝謝你,有我需要用這種方法 – 2012-03-06 01:45:29

+0

很樂意幫忙納入許多變數!如果您發現它有幫助,請記住接受答案。 – 2012-03-06 18:47:15

相關問題