Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中高效地将多个变量从字符重新编码为数值_R_R Car_Recode - Fatal编程技术网

在R中高效地将多个变量从字符重新编码为数值

在R中高效地将多个变量从字符重新编码为数值,r,r-car,recode,R,R Car,Recode,我使用R(版本3.2.3)将多个变量(在同一数据帧中)从字符值(“高”、“中”、“低”和“无问题”)重新编码为数值(4、3、2和1)。我知道有几种方法可以重新编码一个变量,在我下面的例子中,我在car包中使用了“recode”函数。当重新编码单个变量时,这很好,但当我指定多个变量(第45列至第68列)时,所有值都替换为“N/a” df[,c(45:68)]尝试以下方法: df[,c(45:68)] <- lapply(df[,c(45:68)], function(x)

我使用R(版本3.2.3)将多个变量(在同一数据帧中)从字符值(“高”、“中”、“低”和“无问题”)重新编码为数值(4、3、2和1)。我知道有几种方法可以重新编码一个变量,在我下面的例子中,我在car包中使用了“recode”函数。当重新编码单个变量时,这很好,但当我指定多个变量(第45列至第68列)时,所有值都替换为“N/a”

df[,c(45:68)]尝试以下方法:

df[,c(45:68)] <- lapply(df[,c(45:68)], function(x) 
                 recode(x,"'High'=4;
                           'Medium'=3;
                           'Low'=2;
                           'No Concerns'=1",
                            as.numeric.result=TRUE))

df[,c(45:68)]含有dplyrhablar的溶液:

library(dplyr)
library(hablar)

df <- df %>% 
  mutate_at(vars(45:68),
            funs(case_when(x == 'High'        ~ 4,
                           x == 'Medium'      ~ 3,
                           x == 'Low'         ~ 2;
                           x == 'No Concerns' ~ 1))) %>% 
  convert(num(x))
库(dplyr)
图书馆(hablar)
df%
变异_at(vars(45:68)),
funs(当(x=‘高’~4,
x==“中等”~3,
x==“低”~2;
x=='没有问题'~1))%>%
转换(数量(x))

这对我来说效果更好,特别是因为
recode
命令对公式更敏感:

items<-c("a","b","c")

df[items] <- lapply(df[items], function(x) ifelse(x=="STRONGLY AGREE", 6,
  ifelse(x=="AGREE", 5,
  ifelse(x=="SLIGHTLY AGREE", 4,
  ifelse(x=="SLIGHTLY DISAGREE", 3,
  ifelse(x=="DISAGREE", 2,
  ifelse(x=="STRONGLY DISAGREE", 1,0))))))) 

itemsWelcome to StackOverflow!关于在你的问题中提供足够的细节:请阅读关于和如何给出答案的信息。这将使其他人更容易帮助你。也许只需使用
data.matrix
:例如
as.data.frame(泰坦尼克号)
data.matrix(as.data.frame(泰坦尼克号))
。拖拉症最大值-感谢您提出一个好问题并提供一个可行示例的建议。
items<-c("a","b","c")

df[items] <- lapply(df[items], function(x) ifelse(x=="STRONGLY AGREE", 6,
  ifelse(x=="AGREE", 5,
  ifelse(x=="SLIGHTLY AGREE", 4,
  ifelse(x=="SLIGHTLY DISAGREE", 3,
  ifelse(x=="DISAGREE", 2,
  ifelse(x=="STRONGLY DISAGREE", 1,0)))))))