Ищете способ заполнить вектор с новыми значениями, зависящими от значений внутри этого вектора и другой переменной в кадре данных. Вставьте пример того, как данные выглядят ниже.Условная серия Заполните R
PrsVar= c(rep(1,10),rep(2,7),rep(3,11))
IndVar = c(0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0)
OutVar = c(1,1,1,1,2,2,2,3,3,3,1,1,1,1,2,2,2,1,1,1,1,2,2,2,2,3,3,3)
exampdata <- cbind(PrsVar,IndVar,OutVar)
exampdata <- as.data.frame(exampdata)
> exampdata
PrsVar IndVar OutVar
1 1 0 1
2 1 0 1
3 1 0 1
4 1 1 1
5 1 0 2
6 1 0 2
7 1 1 2
8 1 0 3
9 1 0 3
10 1 0 3
11 2 0 1
12 2 0 1
13 2 0 1
14 2 1 1
15 2 0 2
16 2 0 2
17 2 1 2
18 3 0 1
19 3 0 1
20 3 0 1
21 3 1 1
22 3 0 2
23 3 0 2
24 3 0 2
25 3 1 2
26 3 0 3
27 3 0 3
28 3 0 3
Это данные временного ряда, и каждая строка представляет собой человеко-день. PrsVar
- это идентификатор для лица в исследовании, а IndVar
- индикатор того, что эпизод закончился в этот день. Человек-день после этого представляет собой новый эпизод.
Я хотел бы создать переменную, которая выглядит как OutVar
, используя только значения от PrsVar
и IndVar
. Эта новая переменная OutVar
обозначает эпизод, в котором каждый человек-день находится, увеличивается на 1 и начинается с 1 для каждого нового человека.
Я мог бы запустить это через цикл, но мне нужен более эффективный код для работы с 3 000 000 + строк данных. Старался что-то использовать в dplyr
или, может быть, mapply
, но я в тупике. Размышление о решении этого было бы полезно для других и, несомненно, было бы полезно для меня снова в ближайшем будущем.
Спасибо, я закончил тем, что использовал это. Не думал об обратном, обратном, очень полезен. – ArcherT