2015-12-07 181 views
0

我有一個數據集,其中值爲1到5的變量。 我想創建一個新的列,其中值1和3變成A,2和4變成B,變成5 ç嵌套ifelse語句 - 1輸出的多個值

data$new <- ifelse(data$value == c("1", "3"), "A", 
           ifelse(data$value == c("2", "4"), "B", "C")) 

這適用於1,2和5。但由於某些原因,它不接受我把多個號碼A和B.我怎樣才能讓R,共創如果是1或3?

回答

2

我想在這裏你應該使用運營商%in%。 它的工作原理是這樣的:

> '5' %in% c('1', '3', '5') 
[1] TRUE 
> '2' %in% c('1', '3', '5') 
[1] FALSE 

正好相反,由於平等==是這樣的:

> '2' == c('2', '4') 
[1] TRUE FALSE 

- 它實際上輸出兩個布爾值的數組。作爲測試的結果,可能ifelse將第一個數組作爲該數組。

因此,在您的示例中,它被用作data$value %in% c("1", "3") - data$value數組的每個值都被測試爲在給定的數組中。

PS

還要注意 - 在您的例子中,你使用字符串'1''2'等 - 檢查,如果你真的想串在那裏,而不是numeric秒。