简体   繁体   English

R:比较数据框中的多个列和字符

[英]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. 我想为每一行添加另外4列,以便如果C1为“ a”且“ IsA”大于或等于0.05,则新列值为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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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