如何根据多列其他列中的值减去一列中的值?

爆发

我有一个这样的数据框:

dat <- data.frame(c = c(rep(0, 3), rep(5, 3), rep(10, 3)),
                  id = c(rep(c("A","B","C"), 3)),
                  measurement = c(1:8, 1))

dat
#    c id measurement
# 1  0  A           1
# 2  0  B           2
# 3  0  C           3
# 4  5  A           4
# 5  5  B           5
# 6  5  C           6
# 7 10  A           7
# 8 10  B           8
# 9 10  C           1

我想从此列中的所有其他值中减去c为0的“测量”列中的值。这应该根据“ id”列中提供的信息单独进行。例如,应从c> 0且“ id”为A的所有值中减去c为0且“ id”为A的值。应从所有其中c为0且“ id”为B的值中减去c> 0,“ id”为B,依此类推。

如果差异为负,则结果应为0。

结果应如下所示:

result <- data.frame(c = c(rep(0, 3), rep(5, 3), rep(10, 3)),
                 id = c(rep(c("A","B","C"), 3)),
                 measurement = c(1:8, 1),
                 difference = c(0,0,0,3,3,3,6,6,0))

result
#    c id measurement difference
# 1  0  A           1          0
# 2  0  B           2          0
# 3  0  C           3          0
# 4  5  A           4          3
# 5  5  B           5          3
# 6  5  C           6          3
# 7 10  A           7          6
# 8 10  B           8          6
# 9 10  C           1          0

我使用dplyr根据其他列中的信息选择“测量”的值,但是不幸的是我不知道如何进行计算。因此,欢迎提出任何建议!

罗纳克·沙

id您可以为每个measurement减去其中的值c = 0使用pmax我们将负值替换为0。

library(dplyr)

dat %>%
  group_by(id) %>%
  mutate(difference = pmax(measurement - measurement[c == 0], 0))

#     c id    measurement difference
#  <dbl> <chr>       <dbl>      <dbl>
#1     0 A               1          0
#2     0 B               2          0
#3     0 C               3          0
#4     5 A               4          3
#5     5 B               5          3
#6     5 C               6          3
#7    10 A               7          6
#8    10 B               8          6
#9    10 C               1          0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据R中的其他两列减去一列中的值

如何从文件中的每个其他值中减去每个第一列值?

如何根据R中其他列的值过滤一列中的值?

如何根据其他列值对一列中的值进行排序?

如何根据其他 4 列的值对一列中的值求和?

如何根据另一列中的间隔填充熊猫中其他列的缺失值?

如何根据psql中其他列的值删除一列中的重复项

熊猫如何根据其他列中的值汇总一列的总和

R编码如何添加一列并根据其他两列中的值填充它

根据同一列中的其他值将列中的值替换为NaN

根据其他两列中的值来旋转一列中的行值

根据其他列中的条件对一列中的值求和,并更改值

根据不同列中的其他2个值对一列的值求和

根据 SQL Server 中的其他列值推断一列的值

根据其他列中的值计算一列中唯一实例的数量

在Python中循环:根据其他列中的值修改一列

根据其他两列中的重复值检查一列中的差异

从其他列减去行中的值

根据另一列中的值减去R中列中的a值

根据Pandas数据框中的其他三列更改一列的值

根据pyspark数据框中的其他列的值聚合一列

根据另一列减去一列中的值

R 中的变异列:根据另一列条件从列中减去值

如何使用GROUPBY减去一列中的值

如何根据 R 中其他列中的值使列值唯一?

如何根据其他列中的值计算列中唯一值的数量

根据其他列的值填充一列

根据其他列值生成一列

如何交换一列中的值的子集,但保持同一列中的其他值不变?