基于引用类别R的行操作

标签 r dplyr

我有一个数据框:

df <- data.frame(category = rep(c('Cat','Dog','Chicken'),2),
                 value = c(3,4,5,4,6,7),
                 time = c(rep(1,3),rep(2,3))

  category value time
       Cat     3    1
       Dog     4    1
   Chicken     5    1
       Cat     4    2
       Dog     6    2
   Chicken     7    2

如何计算每个时间点的引用变量(在本例中为“Cat”)与其他变量之间的差异。我正在寻找的输出将是这样的:

  category value time
       Cat     0    1
       Dog     1    1
   Chicken     2    1
       Cat     0    2
       Dog     2    2
   Chicken     3    2

最佳答案

假设引用值在每个时间点内只出现一次,您可以dplyr::group_by(time),然后使用逻辑索引来获取,其中类别==“猫”:

library(dplyr)

df %>%
  group_by(time) %>%
  mutate(value = value - value[category == "Cat"]) %>%
  ungroup()
# A tibble: 6 × 3
  category value  time
  <chr>    <dbl> <dbl>
1 Cat          0     1
2 Dog          1     1
3 Chicken      2     1
4 Cat          0     2
5 Dog          2     2
6 Chicken      3     2

关于基于引用类别R的行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74725400/

相关文章:

r - 转换月mmm为数值

r - R 中的 Monty Hall 游戏,带有基本函数

r - 如何在另一个数据框中使用变量+值查找替换单元格值?

r - 遍历每一列和每一行,做一些事情

r - 使用 dplyr 合并列

r - 如何在 R/Shiny 中构建响应式(Reactive)数据框?

R 没有在layout_with_sugiyama 中采用参数hgap

R:为图中的轴区域添加大括号

r - 在 dplyr select 中使用 perl=TRUE regex

r - 是否有一些函数可以使用 group_by 在 R dplyr 中保留唯一值?