2017-08-30 83 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