R 对整个数据集而不是单个列使用ifelse语句
我试图在整个数据帧而不是单个列上使用ifelse 如果我的数据是这样的R 对整个数据集而不是单个列使用ifelse语句,r,dataframe,if-statement,R,Dataframe,If Statement,我试图在整个数据帧而不是单个列上使用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(da
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)
提前非常感谢 你可以这样做
DF[] <- as.integer(DF > 0)
DF
# Var1 Var2 Var3
#1 1 1 1
#2 1 1 0
#3 0 1 1
#4 1 1 1
#5 1 0 1
如果要扩展数据帧,请尝试
DF[paste0(names(DF), "_Binary")] <- as.integer(DF > 0)
DF
# Var1 Var2 Var3 Var1_Binary Var2_Binary Var3_Binary
#1 1 1 1 1 1 1
#2 3 2 0 1 1 0
#3 0 1 2 0 1 1
#4 3 3 1 1 1 1
#5 5 0 3 1 0 1
资料
你可以
DF[] <- as.integer(DF > 0)
DF
# Var1 Var2 Var3
#1 1 1 1
#2 1 1 0
#3 0 1 1
#4 1 1 1
#5 1 0 1
如果要扩展数据帧,请尝试
DF[paste0(names(DF), "_Binary")] <- as.integer(DF > 0)
DF
# Var1 Var2 Var3 Var1_Binary Var2_Binary Var3_Binary
#1 1 1 1 1 1 1
#2 3 2 0 1 1 0
#3 0 1 2 0 1 1
#4 3 3 1 1 1 1
#5 5 0 3 1 0 1
资料
使用lappy:
数据:
使用lappy:
数据:
dplyr方法:
library(dplyr)
data %>%
mutate_all(funs(ifelse(. == 0, 0, 1)))
# or...
data %>%
mutate_all(funs(as.integer(. > 0)))
dplyr方法:
library(dplyr)
data %>%
mutate_all(funs(ifelse(. == 0, 0, 1)))
# or...
data %>%
mutate_all(funs(as.integer(. > 0)))
下面是在每列上使用ifelse的另一个解决方案:
data.frame(Map(ifelse, list(df==0), 0, 1))
var1 var2 var3
1 1 1 1
2 1 1 0
3 0 1 1
4 1 1 1
5 1 0 1
下面是在每列上使用ifelse的另一个解决方案:
data.frame(Map(ifelse, list(df==0), 0, 1))
var1 var2 var3
1 1 1 1
2 1 1 0
3 0 1 1
4 1 1 1
5 1 0 1