在 R 循环中重新编码变量

标签 r loops dplyr recode

我想一起重新编码几个变量。所有这些变量都将经历相同的重新编码更改。 为此,我遵循了以下主题。下面的线程描述了两种执行此操作的方法。 1)。使用列号 2)。使用变量名

我尝试了这两种方法,但收到错误消息。

1) 和 2) 的错误消息。 (function (var, recodes, as.factor, as.numeric = TRUE,levels) 中的错误: 未使用的参数 (2 = "1", 3 = "1", 1 = "0", 4 =“0”,na.rm = TRUE)

recode variable in loop R

#Uploading libraries
library(dplyr)
library(magrittr)
library(plyr)
library(readxl)
library(tidyverse)

#Importing file
mydata <- read_excel("CCorr_Data.xlsx")
df <- data.frame(mydata)
attach(df)

#replacing codes for variables
df %>%
  mutate_at(c(1:7), recode, '2'='1', '3'='1', '1'='0', '4'='0', na.rm = TRUE) %>%
  mutate_at(c(15:24), recode, '2'='0', na.rm = TRUE)


df %>% 
  mutate_at(vars(E301, E302, E303), recode,'2'='1', '3'='1', '1'='0', '4'='0', na.rm = TRUE) %>%
  mutate_at(vars(B201, B202, B203), recode, '2'='0', na.rm = TRUE)

谁能告诉我哪里错了?

在我的数据集中,缺少值,这就是我添加 na.rm = T 的原因。我什至尝试不包含缺失值命令,即使如此,错误消息也是相同的。

请参阅下面的示例数据。

structure(list(Country = c(1, 1, 1, 1, 1, 1), HHID = c("12ae5148e245079f-122042", 
"12ae5148e245079f-123032", "12ae5148e245079f-123027", "12ae5148e245079f-123028", 
"12ae5148e245079f-N123001", "12ae5148e245079f-123041"), HHCode = c("122042", 
"123032", "123027", "123028", "N123001", "123041"), A103 = c(2, 
2, 2, 2, 2, 2), A104 = c("22", "23", "23", "23", "23", "23"), 
    Community = c("Mehmada", "Dhobgama", "Dhobgama", "Dhobgama", 
    "Dhobgama", "Dhobgama"), E301 = c(3, 3, 3, 3, 3, 3), E302 = c(3, 
    2, 4, 4, 3, 3), E303 = c(3, 2, 3, 3, 3, 3), E304 = c(3, 4, 
    4, 4, 3, 3), E305 = c(3, 2, 3, 3, 3, 3), E306 = c(3, 3, 3, 
    3, 3, 3), E307 = c(3, 3, 3, 3, 3, 3), E308 = c(3, 1, 3, 3, 
    3, 3), B201.1 = c(NA, 1, 1, 1, 1, 1), B202.1 = c(NA, 1, 1, 
    1, 1, 1), B203.1 = c(NA, 1, 1, 2, 2, 1), B204.1 = c(NA, 2, 
    1, 2, 1, 1), B205.1 = c(NA, 2, 1, 2, 2, 2), B206.1 = c(NA, 
    1, 1, 1, 2, 1), B207.1 = c(NA, 2, 1, 2, 2, 1), B208.1 = c(NA, 
    2, 2, 2, 2, 2), B209.1 = c(NA, 2, 1, 1, 1, 1), B210.1 = c(NA, 
    1, 1, 1, 1, 1)), row.names = c(NA, 6L), class = "data.frame")
    ```

最佳答案

问题出在 na.rm = TRUE 中,recode 没有该参数

library(dplyr)   
df %>% 
  mutate_at(vars(E301, E302, E303), recode,'2'='1', '3'='1', '1'='0', '4'='0') %>%
  mutate_at(vars(B201, B202, B203), recode, '2'='0')

关于在 R 循环中重新编码变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61844159/

相关文章:

R dplyr 过滤器与轻度复杂的过滤器无法正常工作

Python 在字典中搜索键时仅使用字符串中的第一个字母

c# - 在 C# TimeSpan 类中循环一周中的几天

通过使用 dplyr 添加前缀来重命名除 id 列之外的所有列

hadoop - 在 Sparklyr 中创建新的 Spark 表或数据框的最有效方法是什么?

r - 如何使用 dplyr 根据列的子集中的任何一个是否为 NA 创建新列

r - 如何在 R 中的条形图中显示每个条形的值(不使用 ggplot)?

r - 记录 with\code{\link[package] 时,避免在 pdf 中出现指向任何地方的链接

r - ggplot2 geom_point 与用于二进制数据的 binned x 轴

javascript - for 循环中的 JS 数组