使用管道重新编码对我来说很重要,因此,请不要提供基本的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
答案 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