替换多列中的字符

我有一个数据框如下:

df <- data.frame(list(Anemone=c(0, "S", "A", 0, "F", "R", 0, "F", "F"), 
                      Bivalve=c(0, 0, "R", "R", "S", 0, 0, 0, 0),
                      Bryozoa=c("A", "A", "F", 0, 0, 0, 0, 0, "R")))

我想用 1 替换所有字母,例如:

df_1 <- data.frame(list(Anemone=c(0, 1, 1, 0, 1, 1, 0, 1, 1), 
                      Bivalve=c(0, 0, 1, 1, 1, 0, 0, 0, 0),
                      Bryozoa=c(1, 1, 1, 0, 0, 0, 0, 0, 1)))

我怎样才能做到这一点??提前致谢!

回答

如果非字母是0你可以使用:

+(df != 0)
#      Anemone Bivalve Bryozoa
# [1,]       0       0       1
# [2,]       1       0       1
# [3,]       1       1       1
# [4,]       0       1       0
# [5,]       1       1       0
# [6,]       1       0       0
# [7,]       0       0       0
# [8,]       1       0       0
# [9,]       1       0       1

如果不是并且字母是大写的

df[sapply(df, "%in%", LETTERS)] <- 1
df
#  Anemone Bivalve Bryozoa
#1       0       0       1
#2       1       0       1
#3       1       1       1
#4       0       1       0
#5       1       1       0
#6       1       0       0
#7       0       0       0
#8       1       0       0
#9       1       0       1

如果没有,那么:

df[sapply(df, "%in%", c(letters, LETTERS))] <- 1


以上是替换多列中的字符的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>