标签: recode

如何在R中的数据框中重新编码一组变量

我有一个数据框,其中包含从1到5的不同变量.我想以5变为1的方式重新编码一些变量,反之亦然(x = 6-x).我想定义一个变量列表,这些变量将在我的数据帧中像这样重新编码.

这是我使用的方法lapply.我还没有真正了解它.

  #generate example-dataset
    var1<-sample(1:5,100,rep=TRUE)
    var2<-sample(1:5,100,rep=TRUE)
    var3<-sample(1:5,100,rep=TRUE)
    dat<-as.data.frame(cbind(var1,var2,var3))

    recode.list<-c("var1","var3")  
    recode.function<- function(x){          
    x=6-x
     }
    lapply(recode.list,recode.function,data=dat)
Run Code Online (Sandbox Code Playgroud)

reverse r lapply recode

1
推荐指数
1
解决办法
2239
查看次数

如何使用mutate_all并使用dplyr正确重新编码?

我一直在尝试使用recode的dplyr变体,结合mutate_all对数据集中的所有变量,但它不会产生预期的输出.我发现的其他答案没有解决这个问题(例如dplyr中的Recode和Mutate_all)

这是我尝试过的:

library(tidyverse)
library(car)

# Create sample data
df <- data_frame(a = c("Yes","Maybe","No","Yes"), b = c("No","Maybe","Yes","Yes"))

# Using dplyr::recode
df %>% mutate_all(funs(recode(., `1` = "Yes", `0` = "No", `NA` = "Maybe")))
Run Code Online (Sandbox Code Playgroud)

对价值没有影响:

# A tibble: 4 × 2
      a     b
  <chr> <chr>
1   Yes    No
2 Maybe Maybe
3    No   Yes
4   Yes   Yes
Run Code Online (Sandbox Code Playgroud)

我想要的可以用car :: Recode重现:

# Using car::Recode
df %>% mutate_all(funs(Recode(., "'Yes' = 1; 'No' = 0; 'Maybe' = NA")))
Run Code Online (Sandbox Code Playgroud)

这是期望的结果:

# A tibble: 4 × …
Run Code Online (Sandbox Code Playgroud)

r dplyr recode

1
推荐指数
1
解决办法
1987
查看次数

在 for 循环中重新编码几个变量

我正在处理一些调查数据,其中一些响应的编码不一致。例如,“我不知道”可能被编码为 4、5、97 或 777。我想尽可能有效地将所有这些响应标准化为“77”。我想使用人行横道,并希望避免为发生这种情况的每个变量创建一个新的重新编码命令,如果可能的话,因为有几个。

library(tidyverse)

#df with the inconsistent fourth category
var1 <- c("1", "2", "3", "4")
var2 <- c("1", "2", "3", "5")
var3 <- c("1", "2", "3", "97")
var4 <- c("1", "2", "3", "777")

df <- data.frame(var1, var2, var3, var4)

var <- c("var1", "var2", "var3", "var4")
oldvalue <- c("4", "6", "97", "777")
newvalue <- c("77", "77", "77", "77")

#crosswalk of old values to new values
cw <- data.frame(var, oldvalue, newvalue)

recodevars = cw$var
Run Code Online (Sandbox Code Playgroud)

我尝试过的一些事情如下,尽管我没有任何运气。如果您有任何建议,请告诉我。

rec_all = df %>%
  transmute_at(vars(recodevars), …
Run Code Online (Sandbox Code Playgroud)

r recode tidyverse mutate

1
推荐指数
1
解决办法
109
查看次数

“未替换的值被视为 NA,因为 .x 不兼容”:重新编码数字变量

我有一个数值变量 (V110),其值介于 1-4 之间。由于数字代表对政府的较高信任度 (1) 和较低信任度 (4),我想对它们进行重新编码,以便最高值表示最高信任度,最低值表示最低信任度。现在我尝试了以下语法:

wv6$n.V110 <- recode(wv6$V110, "1=4; 2=3; 3=2; 4=1")
Run Code Online (Sandbox Code Playgroud)

但 R 不断输出错误消息:

警告消息:未替换的值被视为 NA,因为 .x 不兼容。请详细指定替换或提供 .default

我检查了各个答案,即给出的值,其中一些说-2(即不属于“1-4”部分的值,这可能是问题吗?我尝试添加两个“.default=NA”或在语法末尾添加“else=NA”,但这不会使错误消失。有帮助吗?

r incompatibility .x na recode

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

r ×4

recode ×4

.x ×1

dplyr ×1

incompatibility ×1

lapply ×1

mutate ×1

na ×1

reverse ×1

tidyverse ×1