【问题标题】:How to calculate difference of rows based on conditions in R如何根据R中的条件计算行的差异
【发布时间】:2021-12-10 21:41:55
【问题描述】:

我有以下数据集:

value  group1  group2   x
1        0       0      NA
2        0       0      NA
7        0       1      2.5
5        1       0      NA
8        1       0      NA
4        1       0      NA
6        0       1      1.5
3        1       0      NA
2        1       0      NA

现在我想计算 y 列,其中 y = 0 如果组 1 = 0 和 y = 值 -(最后一个不是 NA 的 x 值)如果组 1 = 1。所以它应该如下所示:

value  group1  group2   x       y
1        0       0      NA      0
2        0       0      NA      0
7        0       1      2.5     0
5        1       0      NA      2.5
8        1       0      NA      5.5
4        1       0      NA      1.5
6        0       1      1.5     0
3        1       0      NA      1.5
2        1       0      NA      0.5

我非常感谢任何帮助。非常感谢!

【问题讨论】:

  • 你能把数据转换成data.frame格式吗?这会很容易帮助!
  • 看看ifelse() dplyr::case_when()

标签: r difference


【解决方案1】:

使用zoo::na.locf0 -

transform(df, y = ifelse(group1 == 0, 0, value - zoo::na.locf0(x)))

#  value group1 group2   x   y
#1     1      0      0  NA 0.0
#2     2      0      0  NA 0.0
#3     7      0      1 2.5 0.0
#4     5      1      0  NA 2.5
#5     8      1      0  NA 5.5
#6     4      1      0  NA 1.5
#7     6      0      1 1.5 0.0
#8     3      1      0  NA 1.5
#9     2      1      0  NA 0.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 2016-08-21
    • 2021-12-31
    • 2017-10-22
    • 2021-01-14
    • 2022-01-15
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多