2017-08-30 82 views
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 
+1

'DAT [] < - 作为。整数(数据> 100)'会工作。 – lmo

回答

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 
2
data.frame((data > 100)*1) 
# A B C D 
#1 0 1 0 0 
#2 0 1 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))) 
+3

另外'dat [] < - + sapply(dat,\>>''100)''或'vapply(dat,\'> \',100,FUN.VALUE = rep(0,nrow(dat))) ' – lmo

3

您可以使用此:

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