创建了一个新变量,指示每个参与者内的最后观察和r

问题描述 投票:0回答:0
id<-rep(1:20, each=16) index<-rep(1:16, times=20) day<-rep(rep(1:4, each=4), times=20) mock_df<-data.frame(id, index, day)

这是一个纵向数据,参与者每天提供几天的报告几天。 ID是指每个参与者的日常参与者,以及索引。在模拟数据中,每个“参与者”每天提供4个报告,总计4天。 (但是,实际数据是不平衡的,参与者每天的报告天数不同,报告数量不同。)

我需要一个新的变量“最后”,指示每个参与者每天的最后测量场合。 所以,我想要的是这是:

id index day last 1 1 1 0 1 2 1 0 1 3 1 0 1 4 1 1 1 5 2 0 1 6 2 0 1 7 2 0 1 8 2 1 1 9 3 0 ...
我尝试了

mock_df <- mock_df |> group_by(id) |> mutate(last=day[which.max(day)]) |> ungroup()

但我认为这只是为所有行创建了一个带有值10的变量,因为在实际数据参与者中报告了10天。

像这样的东西可能对您很感兴趣:

library(dplyr)

mock_df |>
  mutate(last = as.integer(max(index) == index), .by = c(id, day))

r dataframe variables
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.