Нужна помощь в замене переменных на целые числа в 103 столбцах в Rstudio - PullRequest
0 голосов
/ 17 июня 2019

возникли проблемы с преобразованием 3 переменных в 3 конкретных целых числа в 103 столбцах.в частности: DESPAIR -> =, MEH -> 1 и JOY -> 2. пытались использовать case_when, но, похоже, не работает.столкнулись с проблемами со значениями NA и попытались преодолеть это, превратив их в 0.но я хочу удалить весь ряд в целом.

У меня есть 2460 строк и 103 столбца, которые я пытаюсь использовать, используя эту функцию.Есть ли лучший способ или более простой способ преодолеть эту проблему?Я также рассмотрел использование forloop также.

Я пытался использовать функцию case_when, чтобы изменить 3 переменные в их целочисленное значение.но мне трудно это делать.

Не уверен, как предоставить данные, но чтобы дать вам представление о кадре данных, это 103 столбца x 2460 строк.каждая строка содержит значение JOY, MEH или DESPAIR и значение NA.**

Я пытаюсь изменить значения JOY, MEH и DESPAIR на 2,1 и 0 соответственно, полностью удалить значения NA полностью, удалив всю строку и сохранив всю странуценности.

Candy_Hierarchy <- tribble(~COUNTRY, ~candy1, ~candy2, ~candy3
              'United States' ,'JOY', 'DESPAIR', 'MEH',
              'Canada', NA, NA, NA, 
              'United Kingdom', 'MEH', 'JOY', 'DESPAIR')
Candy_Hierarchy <- case_when(
  Candy_Hierarchy %% DESPAIR ~ 0,
  Candy_Hierarchy %% MEH ~ 1,
  Candy_Hierarchy %% JOY ~ 2,
  TRUE ~ 0
)

или

for ( col in 2:length(Candy_Hierarchy)) {
DespairVal <- DESPAIR
Candy_Hierarchy$col[Candy_Hierarchy$col %in% DespairVal] <- 0
MehVal <- MEH
Candy_Hierarchy$col[Candy_Hierarchy$col %in% MehVal] <- 1
JoyVal <- JOY
Candy_Hierarchy$col[Candy_Hierarchy$col %in% JoyVal] <- 2
}

не уверен, что второе работает, это всего лишь гипотеза.

при попытке кодаон получает эту ошибку:

"Ошибка в eval_tidy (пара $ lhs, env = default_env): объект 'DESPAIR' не найден" *

1 Ответ

1 голос
/ 17 июня 2019

Вот один подход

library(tidyverse)
Candy_Hierarchy <- tribble(~COUNTRY, ~candy1, ~candy2, ~candy3,
                       'United States' ,'JOY', 'DESPAIR', 'MEH',
                       'Canada', NA, NA, NA, 
                       'United Kingdom', 'MEH', 'JOY', 'DESPAIR')



# Make a function to recode variables
f <- function(x){
  recode(x, 'JOY' = 2, 'MEH' = 1, 'DESPAIR' = 0)}

Candy_Hierachy2 <- Candy_Hierarchy %>% 
  drop_na()  
  # apply recode function to all columns except COUNTRY
  mutate_at(.vars = vars(-COUNTRY), .funs = f) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...