首页 > 解决方案 > 在整个数据集而不是单个列上使用 ifelse 语句

问题描述

我正在尝试在整个数据框而不是单个列上使用 ifelse。

如果我的数据是这样的;

Var1     Var2     Var3
 1        1        1
 3        2        0
 0        1        2
 3        3        1
 5        0        3 

要更改单个列,我会这样做

Var1_Binary<-ifelse(data$Var1 == 0, 0, 1)
Var2_Binary<-ifelse(data$Var2 == 0, 0, 1)
Var3_Binary<-ifesle(data$Var3 == 0, 0, 1)

但我想对整个数据集执行 ifelse - 我有很多变量,对每个变量执行 ifelse 会很耗时。

所以,最终的数据集看起来像这样

Var1     Var2     Var3
 1        1        1
 1        1        0
 0        1        1
 1        1        1
 1        0        1 

非常感谢你!

标签: rdataframeif-statement

解决方案


lapply

data.frame(lapply(df, function(x) as.integer(x != 0)))

数据:

df <- data.frame(
    var1 = c(1,3,0,3,5),
    var2 = c(1,2,1,4,0),
    var3 = c(1,0,2,1,3)
)

推荐阅读