【问题标题】:Create a new columns if at least two variables have the same response in a dataframe如果至少两个变量在数据框中具有相同的响应,则创建一个新列
【发布时间】:2022-12-20 01:40:30
【问题描述】:

我已经尝试了很多东西,但一直无法找到任何合适的东西。 如果一行至少有两个相同的变量响应,我想弄清楚如何使用编码响应向我的数据框添加一个新列。我的数据有 42 列,所以我提供了一个简短示例,但我需要输出包含来自数据框所有列的任何响应。

ID<- c(1,2,3,4,5)
CV<- c("Detected", "Not Detected", "Detected", "Not Detected", "Detected")
RV<- c("Not Detected", "Detected", "Not Detected", "Detected", "Not Detected")
BP<- c("Detected", "Detected", "Not Detected", "Detected", "Detected")

我希望新列被称为“Coinfection”,如果每行有两个“检测到”的观察响应,如果只有一个“检测到”的观察响应,我希望新列指示“Coinfection”或者所有都是“未检测到”,那么我希望列响应为“否定”。所以我希望它看起来像这样:

ID<- c(1,2,3,4,5)
CV<- c("Detected", "Not Detected", "Detected", "Not Detected", "Detected")
RV<- c("Not Detected", "Detected", "Not Detected", "Detected", "Not Detected")
BP<- c("Detected", "Detected", "Not Detected", "Detected", "Detected")

Coinfection<- c("Coinfection", "Coinfection", "Negative", "Coinfection", "Coinfection")

df<- data.frame(ID, CV, RV, BP, Coinfection)
    
ID          CV                RV               BP              Coinfection
1           Detected          Not Detected     Detected        Coinfection
2           Not Detected      Detected         Detected        Coinfection
3           Detected          Not Detected     Not Detected    Negative
4           Not Detected      Detected         Detected        Coinfection
5           Detected          Not Detected     Detected        Coinfection

【问题讨论】:

    标签: r if-statement tidyr reshape mutate


    【解决方案1】:
    df$Coinfection <- ifelse(rowSums(df == "Detected") >= 2, "Coinfection", "Negative"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多