Как сравнить два Data.Frames для добавления отсутствующих данных - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в кодировании и пытаюсь написать все oop. Я пробовал разные способы, но все еще не нашел решения.

Используя приведенные ниже примеры данных, я хочу, чтобы мой l oop:

  1. Посмотрите на S $ Я БЫ.
  2. Найдите все S $ ID, которые соответствуют и: A1) Сравните все Label_Chr, записанные для этого идентификатора, с Master_DataFrame $ Label_Chr A2) Определите все те, которые отсутствуют. A3) Для тех, кто отсутствует, добавьте новую строку в Data.Frame S, заполненную: Bird_ID, Missing Label_Chr и Columns Duration и Count как 0.

  3. Продолжайте цикл до тех пор, пока все не будут сопоставлены группы завершены

Below are examples of the data:     
----------------------------------
Data.Frame S
*ID*                       *Label_Chr*     *Duration*   *Count*
OP_Pen12_R_30mins               Walk.           3.310        1
OP_Pen12_R_30mins               Run.            0.250        1
OP_Pen12_R_30mins               Talk.           1.960        1
OP_Pen12_R_Immediate            Sit.            1.830        1
OP_Pen12_R_Immediate            Talk.           3.850        2

-------------------------------------
Master_DataFrame
*Label_Chr*.     *Duration*  *Count*
Walk.                 0         0
Run                   0         0
Sit                   0         0
Talk                  0         0
----------------------------------

The end S data frame would look like this: 
*ID*                       *Label_Chr*     *Duration*   *Count*
OP_Pen12_R_30mins               Walk.           3.310        1
OP_Pen12_R_30mins               Run.            0.250        1
OP_Pen12_R_30mins               Talk.           1.960        1
OP_Pen12_R_30mins               Sit.            0            0

OP_Pen12_R_Immediate            Sit.            1.830        1
OP_Pen12_R_Immediate            Talk.           3.850        2
OP_Pen12_R_Immediate            Walk.           0            0
OP_Pen12_R_Immediate            Run.            0            0

Я пробовал разные вещи, такие как:

k <- 1
for(i in 1:length(S))
  for (ii in 1:length(MasterBehaviours))
  {Bird_Comparison <- strcmp(S[i,1], S[i+1,1])
  Behaviour_Comparison <- strcmp(S[i,3], MasterBehaviours[ii+1,1]) }
if(Bird_Comparison == TRUE & Behaviour_Comparison == FALSE) # {print(Bird_Comparison) 
{ZZ <- rbind(S, MasterBehaviours[1+k,1])}
print(ZZ)}

А также:

for(i in 1:length(S[,]))
{x <- S[i,1]
y <- S[i+1,1]
labelCheck <- (x==y)}
if(labelCheck == TRUE)
{Behaviour_Comparison <- strcmp(S[i+1,3], MasterBehaviours[1+k,1])}
if (Behaviour_Comparison == FALSE)
{rbind(S, MasterBehaviours[1+k,1])
  print(S)}

Не много происходит с приведенным выше кодом. Для первой попытки ZZ не создан, я получаю это:

Ошибка печати (ZZ): объект 'ZZ' не найден

И для второй блок: я получаю две ошибки:

Ошибка в if (labelCheck == TRUE) {

отсутствует значение, при котором требуется TRUE / FALSE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...