【问题标题】:How to assign values in new column based on condition in another column using if and non-if functions in R如何使用 R 中的 if 和 non-if 函数根据另一列中的条件在新列中分配值
【发布时间】:2019-06-06 17:05:15
【问题描述】:

我有一个数据集“数据”。如果变量(长格式)包含 A1 或 D1,则在 data$dilutions 列中分配“1:5 dil”。如果它有 B1 或 C1,则分配“1:10 dil”。 如何同时使用 if 和 non-if 函数来做到这一点?

在原始数据中我有很多作业,因此我想看看非如果条件是否更好

cycles <- c(1:100)
A1 <- c(1:100)
B1 <- c(100:199)
C1 <- c(5:104)
D1 <- c(0:99)
data <- data.frame("cycles" = cycles, "A1" = A1, "B1" = B1, "C1" = C1, "D1" = D1)


library(reshape2)
data <- melt(data, id.vars=c("cycles"))
data$dilutions <- if(data$variable=="A1"|"D1" <- "1:5 dil", data$variable== "B1" | "C1" <- "1:10 dil")

【问题讨论】:

  • 之前肯定有人问过并回答过这个问题。如果您已经搜索过,那么您应该包括不成功的搜索策略。 (一方面,您对 if 的使用不正确,但这也是一个在 SO 和网络上有多个先前分析器的问题。)

标签: r if-statement variable-assignment


【解决方案1】:

如 cmets 中所述,您对 if 语句的使用不正确。这里有两种方法,一种使用ifelse(),另一种使用对子集的直接赋值。

data$dilutions <- ifelse(data$variable == "A1" | data$variable == "D1", "1:5 dil", "1:10 dil")

如果您有超过这两个可能的结果,您可能需要链接您的 ifelse 语句(即,为调用的 else 部分使用另一个 ifelse()

否则,您可以使用直接分配,如下所示:

data$dilutions[data$variable=="A1" | data$variable== "D1"] <- "1:5 dil"
data$dilutions[data$variable=="B1" | data$variable== "C1"] <- "1:10 dil"

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2021-09-06
    • 1970-01-01
    • 2016-04-15
    • 2020-10-29
    • 1970-01-01
    • 2018-09-28
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多