расширение кадра данных с помощью столбца фактора

Я хотел бы добавить фактор N/P к следующему фрейму данных:

   time   subjects  value
1     0     sub1    10
2     1     sub1    11
3     2     sub1    12
...
10    9     sub1    19
11   10     sub1    20
12    0     sub2    20
13    1     sub2    21
...
21    9     sub2    29
22   10     sub2    30
23    0     sub3    30
24    1     sub3    31
25    2     sub3    32
...
33   10     sub3    40

чтобы он читался следующим образом

   time   subjects  value  status
1     0     sub1    10     N
2     1     sub1    11     N
3     2     sub1    12     N
...
10    9     sub1    19     N
11   10     sub1    20     N
12    0     sub2    20     P
13    1     sub2    21     P
...
21    9     sub2    29     P
22   10     sub2    30     P
23    0     sub3    30     N
24    1     sub3    31     N
25    2     sub3    32     N
...
33   10     sub3    40     N

Пока что факторы «статуса» хранятся в массиве c("N","P","N",....,"P","P") для сотен субъектов.


person mjs    schedule 05.10.2018    source источник


Ответы (1)


Если ваш массив имеет такое же количество элементов, как и наблюдения в data.frame, вы можете просто сделать

df$status <- status_array

Конечно, если они заказаны одинаково.

person DevGin    schedule 05.10.2018
comment
К сожалению, длина массива равна количеству субъектов. Фрейм данных содержит 200 наблюдений для каждого из 100 или около того субъектов. Это означало бы изменить массив следующим образом: «statusArray ‹- c(rep(N,200),...,rep(P,200),rep(P,200))», но я не хочу этого делать это вручную, есть идеи, как сделать это умнее? - person mjs; 05.10.2018
comment
@maciekj Думаю, тебе нужно сделать rep(statusArray, each = 200) - person markus; 05.10.2018
comment
Ваш вопрос кажется расплывчатым. Основано ли значение N или P на определенных условиях? Я не думаю, что вы дали достаточно информации, чтобы получить хороший ответ. - person DevGin; 05.10.2018
comment
Идея @markus была именно тем, что мне было нужно! - person mjs; 05.10.2018
comment
@MarkGingrass нет правил, как назначаются N / P, это результат имитационного эксперимента. - person mjs; 05.10.2018