Преобразование помеченного фактора в исходные данные - PullRequest
0 голосов
/ 31 марта 2020

Если numeric данные преобразуются в factor с манипулируемыми уровнями или метками вроде:

original <- c(1.1,2.1,2.1,1.1,2.1)
manipulated <- factor(original, labels = c("one", "two") )

Есть ли способ конвертировать manipulated в original? если нет, то не лучше ли это было обратимо?

1 Ответ

0 голосов
/ 31 марта 2020

Нет, отменить это изменение невозможно. Если вы сделали

original <- c(1.1,2.1,2.1,1.1,2.1)
manipulated <- factor(original)

, то значения 1.1 и 2.1 будут преобразованы в символьные строки и сохранены как уровни. Но ваше преобразование

manipulated <- factor(original, labels = c("one", "two") )

заменяет уровни на c("one", "two"), поэтому исходные значения больше не являются частью manipulated.

Если вы хотите, чтобы изменение было обратимым, вы можете выполнить манипуляцию в два этапа:

original <- c(1.1,2.1,2.1,1.1,2.1)
manipulated <- factor(original)
savedLevels <- levels(manipulated)
levels(manipulated) <- c("one", "two")

restored <- as.numeric( savedLevels[manipulated] )
restored
#> [1] 1.1 2.1 2.1 1.1 2.1

Не обязательно быть идеальным, поскольку числовые версии чисел не точны, но это будет очень близко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...