我有一个看起来像这样的数据框
Site <- c("X1","X2","X3","X4","X5","X6","X7","X8","X9","X10")
A <- c(0,0,1,2,4,5,6,7,13,56)
B <- c(1,0,0,0,0,4,5,7,7,8)
C <- c(2,3,0,0,4,5,67,8,43,21)
D <- c(134,0,0,2,0,0,9,0,45,55)
mydata <- data.frame(Site,A,B,C,D,stringsAsFactors=FALSE)
我想将所有 > 0 的值转换为 1(即二进制),而不危及列名和行名。
我试过了mydata[mydata>=1]<-1
但它也将我的第一列(行名称)更改为 1:
head(mydata)
Site A B C D
1 1 0 1 1 1
2 1 0 0 1 0
3 1 1 0 0 0
4 1 1 0 0 1
5 1 1 0 1 0
6 1 1 1 1 0
那么如何只将值更改为二进制,而不是行名称?
最佳答案
我们可以创建一个逻辑矩阵并强制转换为二进制
mydata[-1] <- +(mydata[-1] > 0)
关于r - 如何在 R 中将数据更改为二进制并保留行名称列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449754/