将多列值转换为二进制

Ary*_*ryh 2 r dataframe

ID<-c("A1", "A2", "A3", "A4", "A5")  
x<-c(0,1,2,1,1)
y<-c(2,1,1,1,1)
z<-c(0,1,1,0,0)
mydata<-data.frame(ID,x,y,z)
Run Code Online (Sandbox Code Playgroud)

如何将除 ID 列之外的所有列转换为二进制,如上面的 0 应编码为 1。

我的原始数据大约有 1000 列。

Tho*_*ing 5

你可以试试

mydata[-1]  <- + (mydata[-1] > 0)
Run Code Online (Sandbox Code Playgroud)

或者

mydata[-1] <- 1 - !mydata[-1]
Run Code Online (Sandbox Code Playgroud)

这样

> mydata
  ID x y z
1 A1 0 1 0
2 A2 1 1 1
3 A3 1 1 1
4 A4 1 1 0
5 A5 1 1 0
Run Code Online (Sandbox Code Playgroud)


ben*_*n23 5

您可以将值转换为逻辑值,然后转换为整数。这里我使用的mutate是包里的dplyr

library(dplyr)

mydata %>% mutate(across(-ID, ~as.integer(as.logical(.x))))  

ID x y z
1 A1 0 1 0
2 A2 1 1 1
3 A3 1 1 1
4 A4 1 1 0
5 A5 1 1 0
Run Code Online (Sandbox Code Playgroud)