与替换功能替换一个以上的元素(Replacing more than one elements wi

2019-10-21 17:49发布

mtcars$am我想与一个以取代零和的1 0实例的实例。 这是我的尝试:

library(dplyr)

mtcars %>%
dplyr::select(am) %>%
mutate(am.character = replace(am, am %in% c(0, 1), c("zero", "one"))) %>%
as.data.frame

   am am.character
1   1         zero
2   1          one
3   1         zero
4   0          one
5   0         zero
6   0          one
7   0         zero
8   0          one
9   0         zero
10  0          one
11  0         zero
12  0          one
13  0         zero
14  0          one
15  0         zero
16  0          one
17  0         zero
18  1          one
19  1         zero
20  1          one
21  0         zero
22  0          one
23  0         zero
24  0          one
25  0         zero
26  1          one
27  1         zero
28  1          one
29  1         zero
30  1          one
31  1         zero
32  1          one

但是,这一切都已经做的是创建了重复16次的C向量(零一)。 我怎样才能用一个取代零和的1 0实例的实例?

Answer 1:

您可以尝试numeric索引。

 mtcars %>% 
    select(am) %>% 
    mutate(am1= c('zero', 'one')[am+1L])

或者使用replace ,但是当有多个元素来替代,这是没有用的。 最好的办法是使用factor ,并指定levels/labels

 mtcars %>%
      select(am) %>%
      mutate(am1= replace(replace(am, !am, 'zero'), am==1, 'one') )

或代替双replace ,创建的一列zero ,并replacezero' by基础上的价值观one`‘是’

 mtcars %>%
     select(am) %>% 
     mutate(am1= 'zero', am1=replace(am1, am!=0, 'one'))

在这里你可以改变多个元素与相应的替换元素另一种选择是mgsubqdap

 library(qdap)
  mtcars %>%
        select(am) %>%
        mutate(am1= mgsub(0:1, c('zero', 'one'), am))

更新

如果您需要使用replace基于其他改变一个变量的值,

mtcars %>% 
       select(am,gear) %>%
       mutate(am= replace(am, gear %in% 4:5, 1000))


文章来源: Replacing more than one elements with replace function
标签: r dplyr