используя перекод dplyr, чтобы перекодировать только некоторые числовые значения в столбце - PullRequest
0 голосов
/ 01 декабря 2018

Для меня важно перекодировать с использованием каналов, поэтому, пожалуйста, не предлагайте решения на основе R, пожалуйста.

Также важно: у меня активированы обе библиотеки: car и tidyverse.

Итак, у меня есть фрейм данных х.Я хочу создать новый столбец 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 голосов
/ 01 декабря 2018

Это то, что вы ищете?Если вы измените 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
...