【问题标题】:Can I use dplyr mutate to divide multiple rows against another row?我可以使用 dplyr mutate 将多行与另一行分开吗?
【发布时间】:2022-08-05 22:58:52
【问题描述】:

我有以下测试数据:

df <- data.frame(group = c(\'Control\' , \'Low\' , \'Middle\' , \'High\') ,
                 type = c(\'A\' , \'A\' , \'A\' , \'A\') ,
                 value = c(\'3\' , \'5\' , \'2\' , \'4\'))

我试图找到 \"Low\" 、 \"Middle\" 、 \"High\" 的值与 \"Control\" 的值的每个比率 - Low/Control、Middle/Control 、 High/控制。

我已经尝试使用 mutate 和 ifelse,但是,该函数返回一个 NA。

df %>%
  group_by(group) |> 
  mutate(value = ifelse(group == \'Low\' , value / value[Trt == \'Control\'] , value))

我想找到一个函数,它将为每个比率返回适当的结果。

  • 为什么要引用数值?它使他们成为人物。

标签: r dplyr


【解决方案1】:

group_by 似乎是“类型”列(基于输入数据)

library(dplyr)
df <- df %>%
  type.convert(as.is = TRUE) %>%
  group_by(type) %>% 
  mutate(value1 = value/value[group == "Control"]) %>%
  ungroup

-输出

df
# A tibble: 4 × 4
  group   type  value value1
  <chr>   <chr> <int>  <dbl>
1 Control A         3  1    
2 Low     A         5  1.67 
3 Middle  A         2  0.667
4 High    A         4  1.33 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2015-04-01
    • 2023-02-15
    • 2011-05-30
    • 1970-01-01
    • 2018-10-19
    相关资源
    最近更新 更多