R l oop по именам и переменным - PullRequest
0 голосов
/ 27 мая 2020

Итак, у меня есть этот набор данных с несколькими строками для каждого человека, который представляет один и тот же тип событий, которые произошли для каждого человека. Каждый человек мог провести это мероприятие до 39 раз. Я пытаюсь поместить все эти события в одну строку для каждого человека. Теперь к каждому событию привязано несколько переменных. Моя цель состоит в том, чтобы, например, иметь все переменные для первого события под названием A1, B1, C1 et c .... А затем для второго события будут A2, B2, C2 et c ... И далее. Поэтому я подумал, что лучший способ обойти это - создать отдельный файл для каждого номера события, чтобы каждое первое событие было в одном файле, а каждая секунда - во втором et c ... Затем я бы переименовал все переменные с правильными номерами в их именах, и, наконец, я снова объединю все вместе.

Итак, я подумал, что лучший способ сделать это - использовать for l oop, но я не могу заставить его работать.

Это мой текущий код

for (i in 2:39){
  sentence[i]_prison <- sentence_prsubset[which(sentence_prsubset$order_sentence==[i])]
  sentence[i]_prison <- rename(sentence[i]_prison, 
                            c(difftime_SB[i]days="difftime_SBdays",
                              difftime_SB(i)weeks="difftime_SBweeks",
                              difftime_SB(i)fnight="difftime_SBfnight",
                              difftime_SB(i)fnrnum="difftime_SBfnrnum",
                              difftime_SE(i)days="difftime_SEdays",
                              difftime_SE(i)weeks="difftime_SEweeks",
                              difftime_SE(i)fnight="difftime_SEfnight",
                              difftime_SE(i)fnrnum="difftime_SEfnrnum"))
   sentence(i)_prison <- subset(sentence(i)_prison, select=-c(order_sentence)) }

В настоящее время я получаю сообщение об ошибке «неожиданный токен». Я пробовал только первую строку для l oop, но это тоже не работает, у меня все еще есть эта ошибка. Я попытался вставить i в [i] или (i), но это не сработало. Я действительно хочу, чтобы число было посередине имен переменных.

Мне еще предстоит добавить слияние в код, поскольку в каждом случае код не работает должным образом. Но почему я не могу это сделать, как я могу сделать это лучше, и возможно ли это.

Я делал это ранее с помощью Stata, но я не могу понять, как R работает с этим типом из для л oop.

1 Ответ

1 голос
/ 27 мая 2020

Наличие индекса подмножества, встроенного в имя объекта, не работает в R. Вам нужно поместить его в конец объекта. Выполнение сравнения с [i] тоже не то, что я видел в R. Этот код не будет работать:

sentence[i]_prison <- sentence_prsubset[which(sentence_prsubset$order_sentence==[i])]

В качестве общего предложения: создайте фрейм данных или тиббл с двумя столбцами: имя человека и событие. Обе струны я ожидал. Затем сгруппируйте по имени (dplyr group_by) и используйте tidyr функцию pivot_wider, чтобы перейти к широкому объекту данных.

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