Мне нужно выбрать 2-ю и 3-ю позицию для каждой группы в кадре данных. Я пытался получить ошибку.Как выбрать вторую и третью строку для каждой группы в R
Образец данных:
USER.ID restaurant
3 aaaa
3 ababa
3 asddw
4 bbbb
4 wedwe
2 ewedw
1 qwqw
1 dwqd
1 dqed
1 ewewq
Желаемый результат:
USER.ID 2nd_restaurant 3rd_restaurant
3 ababa asddw
3 ababa asddw
3 ababa asddw
4 wedwe NA
4 wedwe NA
2 NA NA
1 dwqd dqed
1 dwqd dqed
1 dwqd dqed
1 dwqd dqed
Я попытался с помощью dplyr, но я предполагаю, что из-за огромного объема данных, это занимает много времени, чтобы вычислить. Есть ли способ вычислить его более эффективно?
Мой код:
data1 <- data %>%
arrange(USER.ID) %>%
group_by(USER.ID) %>%
mutate(second_restaurant = data[2,11]) %>%
mutate(third_restaurant = data[3,11])
11 это номер столбца ресторана в исходном наборе данных.
Я собирался отправить почти то же самое с 'data.table', так что я положу его здесь' '' библиотека (Таблица данных) ; setDT (df) [, ': =' (restaurant_2 = ресторан [2L], restaurant_3 = ресторан [3L]), by = USER.ID] '' ' –
Или не переписывая первый столбец с помощью' transformute() 'и' nth() ':' df%>% group_by (USER.ID)%>% transformute (restaurant2 = nth (ресторан, 2), restaurant3 = nth (ресторан, 3)) ' –
@people! Это так. Я не владею этими ответами, поэтому не стесняйтесь использовать кнопку редактирования :-) – A5C1D2H2I1M1N2O1R2T1