【问题标题】:Add value to column with logical operator on row R [duplicate]使用 R 行上的逻辑运算符向列添加值 [重复]
【发布时间】:2021-08-12 23:16:32
【问题描述】:

我在 R 中有一个长数据框,其中有一列名为“Well”。每个孔在该列中出现不止一次。对于这些孔的一小部分,我想将一个值添加到一个名为“Trypan”的空列中。

所以我的 df 看起来像这样,但很长。

Well Trypan
A12 NA
B12 NA
C12 NA
... NA
A12 NA
B12 NA
C12 NA

我想为每个名为 A12 的孔在台盼列中分配一个相同的值。 我不想写一个完整的向量或制作一个新的 df 并附加/融化它,这很痛苦。

我想做一些简单的事情,比如 "if well = A12, Trypan = 90." 但我不知道那个语法!

事实上,我已经尝试过用谷歌搜索,但似乎其他人提出了不同的问题,而我无法应用于我的问题。对于这个非常基本的问题,我深表歉意。

【问题讨论】:

    标签: r dataframe logical-operators


    【解决方案1】:

    只需使用 == 创建一个逻辑向量,并使用该索引将 90 分配给 'Trypan' 中的那些行

    df1$Trypan[df1$Well == "A12"] <- 90
    

    -输出

        Well Trypan
    1  A12     90
    2  B12     NA
    3  C12     NA
    4  A12     90
    5  B12     NA
    6  C12     NA
    

    数据

    df1 <- structure(list(Well = c("A12", "B12", "C12", "A12", "B12", "C12"
    ), Trypan = c(90, NA, NA, 90, NA, NA)), row.names = c(NA, -6L
    ), class = "data.frame")
    

    【讨论】:

    • 效果很好,谢谢!
    【解决方案2】:

    你可以试试

    transform(
      df,
      Trypan = replace(Trypan, Well == "A12", 90)
    )
    

    给了

      Well Trypan
    1  A12     90
    2  B12     NA
    3  C12     NA
    4  A12     90
    5  B12     NA
    6  C12     NA
    

    数据

    > dput(df)
    structure(list(Well = c("A12", "B12", "C12", "A12", "B12", "C12"
    ), Trypan = c(90, NA, NA, 90, NA, NA)), row.names = c(NA, -6L
    ), class = "data.frame")
    

    【讨论】:

    • 谢谢你,成功了!
    猜你喜欢
    • 2013-12-21
    • 1970-01-01
    • 2019-04-21
    • 2011-03-14
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多