大家好我有这个数据集
library(dplyr)
library(tidyr)
input<- frame_data(
~member_id, ~fill_date , ~drug, ~days_supply,
"603", "02/17/2005", "a", 30,
"603", "06/13/2005", "a", 30,
"603", "08/11/2005", "a", 30,
"603", "06/12/2006", "b", 15,
"603", "05/09/2006", "b", 30
)
我试图创建一个名为“time”的变量,它指示变量“drug”出现的时间。所以输出应该如下所示
output<- frame_data(
~member_id, ~fill_date , ~drug, ~days_supply, ~time,
"603", "02/17/2005", "a", 30, 1,
"603", "06/13/2005", "a", 30, 2,
"603", "08/11/2005", "a", 30, 3,
"603", "06/12/2006", "b", 15, 1,
"603", "05/09/2006", "b", 30 2
)
换句话说,我在寻找一种循环,它可以在每次“drug”变量更改时重置
我试过这个密码
time<-1
i<-2
j<-1
while (i <=nrow(input)){
if (input[i,3,drop=]==input[i-1,3,drop=]){
j<-i
time<-c(time,j)
}else{
j<-1
time<-c(time,j)
}
i<-i+1
}
但它当然不起作用,因为无法重置i,因为它在同一时间验证条件时指示行索引。
谢谢你的帮助