【问题标题】:How to apply mutate based on ntile()-groups in dplyr?如何在 dplyr 中基于 ntile()-groups 应用变异?
【发布时间】:2020-02-02 21:43:11
【问题描述】:

我已经尝试根据类似的questions寻找答案

作为tidyverse 的新手,我有以下问题:如何使用dplyr 估算每个ntile() 的中位数

# Data    
library(survival)
data(lung)

第一

p <- lung %>% mutate(test=ntile(inst,3))

所以现在

table(p$test)

 1  2  3 
76 76 75 

我想估计中间时间,即p$time,每个p$test

类似

p %>% mutate(test=ntile(inst,3), test.time=median(time[test %in% 1:3]))

这没有提供我所寻求的。

【问题讨论】:

标签: r dplyr


【解决方案1】:

我们可以用'test'作为分组变量来计算'time'的median

library(dplyr)
lung %>% 
  group_by(test = ntile(inst, 3)) %>%
  mutate(test.time=median(time))

如果需要汇总输出,请将mutate 替换为summarise

【讨论】:

  • 谢谢@akrun,做到了。您能否简要解释一下我是如何知道最后一行中写的median(time) 指的是在第二行中创建的“测试”?我的意思是为什么它不根据任何其他变量估计中位数(时间)?
  • @cmirian 它仅按group_by 中创建的test 变量进行分组,这里的“时间”仅使用每个“测试”组的时间行
猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2020-08-13
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多