r - 需要帮助将变量更改为 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’”
解决方案
这是一种方法
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)
推荐阅读
- c# - 从 C# 到 PHP 的正确转换函数
- javascript - 如何在 mobx 中实现浅数组复制
- c - libmodbus:modbus_mapping_new() 不能正常工作?
- python - 如何从 tf.data.Dataset.zip((images, labels)) 获取两个 tf.dataset
- time-complexity - Big O vs 函数类型定义
- php - woocommerce分类法ajax过滤器,获得正确的分页
- java - 在onActivityResult中分别上传两张图片
- python - Python3:变量赋值,名称中的下划线在 Pycharm 中产生奇怪的行为
- tensorflow - tensorflow tf.maximum(0, x) 返回错误
- http - NiFi:GetHTTP处理器正则表达式无效错误