替换多列中的字符
我有一个数据框如下:
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