使用dplyr的重新编码仅重新编码一列中的一些数字值

时间:2018-11-30 22:09:28

标签: r dplyr recode

使用管道重新编码对我来说很重要,因此,请不要提供基本的R解决方案。

也很重要:我同时激活了两个库:汽车和tidyverse。

所以,我有一个数据框x。我想产生一个新的列c,然后只将其中的3值重新编码为300。当我想用一个整数替换时,以下方法起作用了,但是如果我需要重新编码为浮点数怎么办?

谢谢!

library(car)
library(tidyverse)
x <- data.frame(a = 1:3, b = 3:1)
x %>% mutate(c = a*b) %>% mutate(c = dplyr::recode(c, `3` = 300L)) # Works
x %>% mutate(c = a*b) %>% mutate(c = dplyr::recode(c, `3` = 0.333)) # Doesn't work

1 个答案:

答案 0 :(得分:1)

这是您要找的吗?如果将c更改为双精度,则可以使用双精度(十进制)。根据@Axeman和@Jay的评论,它会维护变量中的类型。

x %>% mutate(c = a*b) %>% mutate(c = dplyr::recode(as.double(c), `3` = 0.333))

  a b     c
1 1 3 0.333
2 2 2 4.000
3 3 1 0.333