首页 > 解决方案 > 需要帮助将变量更改为 Rstudio 中 103 列中的整数

问题描述

将 3 个变量更改为 103 列中的 3 个特定整数时遇到问题。具体来说: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 (pair$lhs, env = default_env) 中的错误:找不到对象‘DESPAIR’”

标签: r

解决方案


这是一种方法

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) 

推荐阅读