【问题标题】:R: finding absolute difference with dplyr and group_byR:使用 dplyr 和 group_by 找到绝对差异
【发布时间】:2020-05-12 15:13:47
【问题描述】:

我有下面的例子。

我想创建一个新列,其中 AGE 与同一 PairID 中的每个 Treat==1 相比具有绝对差异。

所需的输出应如下所示。

我已尝试将 dplyr 用于:

数据完成:

Treat <- c(1,0,0,1,0,0,1,0)
PairID <- c(1,1,1,2,2,2,3,3)
Age <- c(30,60,31,20,20,40,50,52)

D <- data.frame(Treat,PairID,Age)
D 

D %>%
  group_by(PairID) %>%
  abs(Age - Age[Treat == 1]) 

【问题讨论】:

  • 请告诉我们处理数据是什么样的,而不是在您的示例中
  • 您能否向我们展示一下您当前的代码生成了什么?您可以为此使用dput(output_df)
  • 用于创建新列的dplyr 函数是mutate()。试试D %&gt;% group_by(PairID) %&gt;% mutate(`|d|` = abs(Age - Age[Treat == 1]))

标签: r dplyr


【解决方案1】:

在 Base-R 中:

D$absD <- unlist(lapply(split(D,D$PairID), function(x) abs(x$Age - x$Age[x$Treat==1])))

> D
  Treat PairID Age absD
1     1      1  30    0
2     0      1  60   30
3     0      1  31    1
4     1      2  20    0
5     0      2  20    0
6     0      2  40   20
7     1      3  50    0
8     0      3  52    2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2021-04-17
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多