【问题标题】:How to mutate new column by using multiple variable's in another column r如何通过在另一列 r 中使用多个变量来改变新列
【发布时间】:2021-05-14 09:24:28
【问题描述】:

您好,我想使用 mutate 函数创建一个新变量 Foldchange。但是,我想使用同一列中的值来计算它。有没有办法计算一个新变量,在同一列中折叠变化而不重新排列表格,这样表格就不需要拆分?

为了清楚起见,这是一个示例:

  Plate Sample_ID Visit  Bead_MFI Phago_Score mean_phago
 <fct> <chr>     <fct>        <int>       <dbl>      <dbl>
 4     100004    V1            1199        237.       253.
 4     100077    V1            1522        405.       396.
 4     100077    V2            1349        324.       814.
 4     100004    V2            1518        466.       867

我想要的输出类似于使用:

test %>% group_by("Sample", "Plate") %>% mutate (Foldchange = ((mean_phago$V2-mean_phago$V1)/mean_phago$V1))

得到

Plate Sample_ID Visit  Bead_MFI Phago_Score mean_phago  Foldchange 
 <fct> <chr>     <fct>        <int>       <dbl>      <dbl>
 4     100004    V1            1199        237.       253.  2.42
 4     100077    V1            1522        405.       396.  1.11
 4     100077    V2            1349        324.       834.  1.11
 4     100004    V2            1518        466.       867   2.42

显然,我无法使用此代码选择基于 V1 和 V2 变量,但这只是为了说明。我希望通过这种方式,我可以保持我的附加表完好无损,折叠变化会有重复值,但此时没关系。

提前感谢您的任何帮助,对于 R 来说还是个新手!

玛丽

【问题讨论】:

    标签: r datatable dplyr


    【解决方案1】:

    我们需要根据逻辑条件进行子集化

    library(dplyr)
    test %>% 
        group_by(Plate) %>%
        mutate(Foldchange =  (mean_phage[Visit == 'V2'] - 
              mean_phage[Visit == 'V1'])/mean_phage[Visit =='V1']) 
    

    或者如果每个组只有一个'V1','V2',可以使用diff

    test %>% 
        arrange(Plate, desc(Visit)) %>%
        group_by( Plate) %>%
        mutate(Foldchange = diff(mean_phage)/last(mean_phage))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2020-12-25
      • 2020-04-25
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多