我有一个数据框:
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/