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

用户名

对我而言,使用管道进行重新编码非常重要,因此,请不要提供基本的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
扎克

这是您要找的东西吗?如果更改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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章