使用 replace 函数替换多个元素
Replacing more than one elements with replace function
在 mtcars$am
中,我想将 0 的实例替换为零,将 1 的实例替换为一。这是我试过的:
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(0,1) 向量。如何将 0 的实例替换为零,将 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
,而是根据 "am"[=26 的值创建一个 zero
和 replace
的 zero' by
one` 列=]
mtcars %>%
select(am) %>%
mutate(am1= 'zero', am1=replace(am1, am!=0, 'one'))
您可以使用相应的替换元素更改多个元素的其他选项是 mgsub
来自 qdap
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))
在 mtcars$am
中,我想将 0 的实例替换为零,将 1 的实例替换为一。这是我试过的:
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(0,1) 向量。如何将 0 的实例替换为零,将 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
,而是根据 "am"[=26 的值创建一个 zero
和 replace
的 zero' by
one` 列=]
mtcars %>%
select(am) %>%
mutate(am1= 'zero', am1=replace(am1, am!=0, 'one'))
您可以使用相应的替换元素更改多个元素的其他选项是 mgsub
来自 qdap
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))