【发布时间】:2019-12-18 11:02:03
【问题描述】:
我想使用dplyr 包的pipe function 有条件地更改列的值。我使用了以下方法-
library(dplyr)
> df = data.frame("Col1" = letters[1:6], "Col2" = 1:6)
> df %>% mutate(Col3 = ifelse(Col1 == "a", "aa", Col1))
Col1 Col2 Col3
1 a 1 aa
2 b 2 2
3 c 3 3
4 d 4 4
5 e 5 5
6 f 6 6
在上面的结果中,Col3 的第一个值被正确分配但没有休息。有人可以帮我理解正确的方法吗?
【问题讨论】:
-
这可能是一个因素。转换为字符并重试。类似
df %>% mutate(Col3 = ifelse(Col1 == "a", "aa", as.character(Col1))) -
与手头的问题无关,但使用管道运算符与问题无关。
mutate(df, Col = ifelse(Col1 == "a", "aa", Col1))会有相同的结果