我有一个这样的数据框,每个人都有多次访问.我想 for each 人捕获第一次发生MCI(MCI=1)的FDAY,并将值放入另一个名为Days的列中.我可以用dplyr来做吗?

ID <-  c(1,1,1,1,1,2,2,2)
Visit <- c(1,2,3,4,5,1,2,3)
MCI <- c(0,1,0,1,0,0,1,1) 
FDAYS <- c(20,60,40,80,100,30,60,90)
df <- data.frame(ID, Vist, MCI, FDAYS)

我试过了,但它只给了我每个人第一次访问的FDAY.

df %>%
group_by (ID) %>%
mutate(DAYS = case_when(MCI == 1~ min(FDAYS),
                         .default = NA)) %>%
mutate(DAYS = first(na.omit(DAYS)))

推荐答案

下面是使用which.maxdplyr种方式:

library(dplyr)

df %>%
  mutate(DAYS = FDAYS[which.max(MCI == 1)], .by= ID)
  ID Visit MCI FDAYS DAYS
1  1     1   0    20   40
2  1     2   1    40   40
3  1     3   0    60   40
4  1     4   1    80   40
5  1     5   0   100   40
6  2     1   0    30   60
7  2     2   1    60   60
8  2     3   1    90   60

R相关问答推荐

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

次级y轴R gggplot2

Highcharter多次钻取不起作用,使用不同方法

在R中,如何在每个堆叠的条上放置误差条,特别是当使用facet_grid时?

筛选出以特定顺序患病的个体

如何在R中对深度嵌套的tibbles中的非空连续行求和?

使用范围和单个数字将数字与字符串进行比较

Ggplot2中geom_tile的动态zoom

在多页PDF中以特定布局排列的绘图列表不起作用

将数据集旋转到长格式,用于遵循特定名称模式的所有变量对

将工作目录子文件夹中的文件批量重命名为顺序

判断函数未加载R中的库

快速合并R内的值

按两个因素将观测值分组后计算单独的百分比

如何在Quarto中使用美人鱼图表中的标记来加粗文本

在不重复主题的情况下重新排列组

网络抓取NBA.com

通过匹配另一个表(查找表)中的列值来填充数据表,并在另一个变量上进行内插

将日期列从字符转换为日期得到的结果是NAS