微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替换多列中的值

如何解决替换多列中的值

这是我的数据框:

ID <- 1:4
var1 <- c("yes","no","yes","no")
var2 <- c("no","no")
var3 <- c("yes","no")
data <- data.frame(ID,var1,var2,var3)

我想将所有yes替换为1,并将no替换为0,以便在下面有这样的表格

  ID var1 var2 var3
1  1    1    0    1
2  2    0    0    1
3  3    1    1    0
4  4    0    0    0

解决方法

一种解决方案是across()中的tidyverse

library(tidyverse)
#Data
ID<-1:4
var1<-c("yes","no","yes","no")
var2<-c("no","no")
var3<-c("yes","no")
#Code
data<-data.frame(ID,var1,var2,var3,stringsAsFactors = F)
#Solution
data %>%
  mutate(across(c(var1:var3),~ ifelse(.=='yes',1,0)))

输出:

  ID var1 var2 var3
1  1    1    0    1
2  2    0    0    1
3  3    1    1    0
4  4    0    0    0

一个base R解决方案将使用索引为yes / no的索引:

#Solution 2
data[data=='yes']<-1
data[data=='no']<-0
data[,-1] <- sapply(data[,-1],as.numeric)

输出:

  ID var1 var2 var3
1  1    1    0    1
2  2    0    0    1
3  3    1    1    0
4  4    0    0    0
,

一种androiddeployqt解决方案:

base
,

使用data.table

library(data.table)
setDT(data)[,(2:4) :=  lapply(.SD,function(x) as.integer(x == 'yes')),.SDcols = 2:4]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。