如何将大型数据集中的NA转换为0或1?

时间:2012-03-05 22:04:22

标签: r function binary dataset

以下是我的数据框的摘录:

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

在Surgery and Internal列下,我想用0或1替换NA,1为是,0为否。这是一个非常大的数据集,我宁愿在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

我非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

假设您的数据框名为dfrm,您的意思是什么?

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

答案 1 :(得分:4)

假设这是一个名为dfrm的数据框

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

答案 2 :(得分:0)

我建议单独使用MemberIDSpecialty,并使用一些ifelse语言。

如果手术和内科相互排斥,您只需要一个新变量,因为第二个变量会给您完全相同的信息(医生是外科医生还是内科医生)。

将您的数据设为data.frame,名为 specialty.data ,并尝试以下操作:

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

希望这有帮助!