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 列。
你可以试试
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)
您可以将值转换为逻辑值,然后转换为整数。这里我使用的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)