2017-04-14 37 views
1

我呼吁刮风一个功能,它具有布尔值取代数值而不是布尔

data<- data.frame(windy=c(FALSE, TRUE, FALSE, FALSE, FALSE, TRUE)) 

我需要更换与0和所有Falses 100

所有Trues当我使用

w<-setNames(c(100, 0), c(TRUE, FALSE))[data$Windy] 

结果是

FALSE <NA> <NA> <NA> <NA> <NA> 
    0 NA NA NA NA NA 

我该如何解决此问题?

回答

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 
3
data$windy2 <- data$windy * 100 
data 
# windy windy2 
# 1 TRUE 100 
# 2 TRUE 100 
# 3 FALSE  0 
# 4 FALSE  0 
# 5 TRUE 100 
2

因为你和一个布尔值已经工作,我会推荐ifelse函数。

data = data.frame(windy=c(FALSE, TRUE, FALSE, FALSE, FALSE, TRUE)) 
data$windy = ifelse(data$windy, 100, 0) 
data 
相关问题