我在每列的数据框中都有数字值,我想要更改这些列的值。R-根据条件更改数据帧的值
例如,如果一个值小于100然后它必须是0,并且如果其大于100然后它必须是1。
data<- read.table(text = "
A B C D
99 101 99 50
90 110 110 151", header = TRUE)
则它就会成为
A B C D
0 1 0 0
0 1 1 1
我在每列的数据框中都有数字值,我想要更改这些列的值。R-根据条件更改数据帧的值
例如,如果一个值小于100然后它必须是0,并且如果其大于100然后它必须是1。
data<- read.table(text = "
A B C D
99 101 99 50
90 110 110 151", header = TRUE)
则它就会成为
A B C D
0 1 0 0
0 1 1 1
data<- read.table(text = "
A B C D
99 101 99 50
90 110 110 151", header = TRUE)
for(cl in 1:ncol(data)){
data[,cl] <- ifelse(data[,cl]>=100, 1, 0)
}
data
data.frame((data > 100)*1)
# A B C D
#1 0 1 0 0
#2 0 1 1 1
我们可以使用tidyverse
library(tidyverse)
data %>%
mutate_all(funs(+(.>100)))
# A B C D
#1 0 1 0 0
#2 0 1 1 1
或用base R
data[] <- lapply(data, function(x) +(x > 100))
通过@lmo建议其他选项包括
data[] <- +sapply(data, `>`, 100)
vapply(data, `>`, 100, FUN.VALUE= numeric(nrow(data)))
另外'dat [] < - + sapply(dat,\>>''100)''或'vapply(dat,\'> \',100,FUN.VALUE = rep(0,nrow(dat))) ' – lmo
您可以使用此:
data<- read.table(text = "
A B C D
99 101 99 50
90 110 110 151", header = TRUE)
dat <- ifelse(data>100 , 1, 0)
dat
A B C D
[1,] 0 1 0 0
[2,] 0 1 1 1
'DAT [] < - 作为。整数(数据> 100)'会工作。 – lmo