R 为具有重复和缺失观察的每个组生成id
我有一个数据集,上面有几个星期观察到的个人。有些人在几周内没有观察到,有些人在同一周内有几次观察到。我需要创建一个每周ID(代码中的ID_week),该ID是针对个人的。如果一个人在一周内有两次或两次以上的观察,两次观察的id_周应相同。如果一个人在给定的一周内没有观察到,那么下一周的观察应该是从最后一个观察点开始的。这将产生以下数据:R 为具有重复和缺失观察的每个组生成id,r,datatable,dplyr,grouping,panel,R,Datatable,Dplyr,Grouping,Panel,我有一个数据集,上面有几个星期观察到的个人。有些人在几周内没有观察到,有些人在同一周内有几次观察到。我需要创建一个每周ID(代码中的ID_week),该ID是针对个人的。如果一个人在一周内有两次或两次以上的观察,两次观察的id_周应相同。如果一个人在给定的一周内没有观察到,那么下一周的观察应该是从最后一个观察点开始的。这将产生以下数据: dt<-data.frame(individ=c(1,1,1,2,2,2,3,3,3,3),week=c(1,2,2,1,2,4,1,3,4,4),id_
dt<-data.frame(individ=c(1,1,1,2,2,2,3,3,3,3),week=c(1,2,2,1,2,4,1,3,4,4),id_week=c(1,2,2,1,2,3,1,2,3,3))
使用
数据的选项。表
:
setDT(dt)[, id_week := rleid(week), individ]
使用
数据的选项。表
:
setDT(dt)[, id_week := rleid(week), individ]
以下是几个备选方案: 1) 使用密集排列:
library(dplyr)
dt %>% group_by(individ) %>% mutate(id_week = dense_rank(week))
dt$id_week <- with(dt, ave(week, individ, FUN = function(x) match(x, unique(x))))
library(data.table)
setDT(dt)[, id_week := as.integer(factor(week)), individ]
2) 使用匹配
和唯一
:
library(dplyr)
dt %>% group_by(individ) %>% mutate(id_week = dense_rank(week))
dt$id_week <- with(dt, ave(week, individ, FUN = function(x) match(x, unique(x))))
library(data.table)
setDT(dt)[, id_week := as.integer(factor(week)), individ]
以下是几个备选方案: 1) 使用密集排列:
library(dplyr)
dt %>% group_by(individ) %>% mutate(id_week = dense_rank(week))
dt$id_week <- with(dt, ave(week, individ, FUN = function(x) match(x, unique(x))))
library(data.table)
setDT(dt)[, id_week := as.integer(factor(week)), individ]
2) 使用匹配
和唯一
:
library(dplyr)
dt %>% group_by(individ) %>% mutate(id_week = dense_rank(week))
dt$id_week <- with(dt, ave(week, individ, FUN = function(x) match(x, unique(x))))
library(data.table)
setDT(dt)[, id_week := as.integer(factor(week)), individ]
谢谢,这虽然没有给我个人的具体身份证周。抱歉错过了by谢谢,这虽然没有给我个人的具体身份证周。抱歉错过了by