我有一个名为windy的功能,它有布尔值
data<- data.frame(windy=c(FALSE, TRUE, FALSE, FALSE, FALSE, TRUE))
我需要将所有Falses替换为0,将所有Trues替换为100
当我使用
时w<-setNames(c(100, 0), c(TRUE, FALSE))[data$Windy]
结果是
FALSE <NA> <NA> <NA> <NA> <NA>
0 NA NA NA NA NA
我该如何解决这个问题?
答案 0 :(得分:3)
data$windy2 <- data$windy * 100
data
# windy windy2
# 1 TRUE 100
# 2 TRUE 100
# 3 FALSE 0
# 4 FALSE 0
# 5 TRUE 100
答案 1 :(得分:2)
因为您已经使用布尔值,我建议使用ifelse
函数。
data = data.frame(windy=c(FALSE, TRUE, FALSE, FALSE, FALSE, TRUE))
data$windy = ifelse(data$windy, 100, 0)
data
答案 2 :(得分:1)
我们可以做到
data$windy <- with(data, (windy + 99)*(windy))
data$windy
#[1] 0 100 0 0 0 100
用数字索引替换值的更通用的方法是
c(0, 100)[(data$windy)+1]
#[1] 0 100 0 0 0 100