简体   繁体   中英

R: Compare Multiple columns and characters in a dataframe

I have a dataframe with several columns some of which contain individual characters for example:

test <- data.frame("IsA" = c("1.0", "0.5", "0.0"), "IsB" = c("1.0", "0.5", "0.0"), "IsC" = c("0.0", "0.5", "0.0"),  "C1" = c("a", "b", "c"), "C2"= c("a", "a", "c"), "C3" = c("a", "b", "b"), "C4" = c("c", "b", "c"))

Giving:

  IsA IsB IsC C1 C2 C3 C4
1 1.0 1.0 0.0  a  a  a  c
2 0.5 0.5 0.5  b  a  b  b
3 0.0 0.0 0.0  c  c  b  c

For each row I would like to add another 4 columns so that if C1 is "a" and "IsA" is greater than or equal to 0.05 the new column value is True.

  IsA IsB IsC C1 C2 C3 C4  C1.t  C2.t  C3.t  C4.t
1 1.0 1.0 0.0  a  a  a  c  TRUE  TRUE  TRUE FALSE
2 0.5 0.5 0.5  b  a  b  b  TRUE  TRUE  TRUE  TRUE
3 0.0 0.0 0.0  c  c  b  c FALSE FALSE FALSE FALSE 

Not optimized for speed:

test <- cbind(test,
              t(apply(test, 1, function(x) {
                a <- as.numeric(x[1:3])
                names(a) <- letters[1:3]
                b <- x[-(1:3)]
                a[b] >= 0.05  
              })))

  IsA IsB IsC C1 C2 C3 C4     1     2     3     4
1 1.0 1.0 0.0  a  a  a  c  TRUE  TRUE  TRUE FALSE
2 0.5 0.5 0.5  b  a  b  b  TRUE  TRUE  TRUE  TRUE
3 0.0 0.0 0.0  c  c  b  c FALSE FALSE FALSE FALSE

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM