使用 dplyr 的重新编码仅重新编码列中的某些数值
using dplyr's recode to recode only some numeric values in a column
使用管道重新编码对我来说很重要,所以请不要提供基础 R 解决方案。
同样重要:我激活了两个库:car 和 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
更改为 double,则可以使用双精度(小数)。根据@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
使用管道重新编码对我来说很重要,所以请不要提供基础 R 解决方案。
同样重要:我激活了两个库:car 和 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
更改为 double,则可以使用双精度(小数)。根据@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