我需要选择数据框中每个组的第二个和第三个条目。我一直在尝试,但出现错误。
样本数据:
我是一名有用的助手,可以为您翻译文本。
样本数据:
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
几乎相同的内容,所以我会在这里放置它:library(data.table) ; setDT(df)[, `:=`(restaurant_2 = restaurant[2L], restaurant_3 = restaurant[3L]), by = USER.ID]
。 - David Arenburgtransmute()
和nth()
函数,而不是重新复制第一列:df %>% group_by(USER.ID) %>% transmute(restaurant2 = nth(restaurant, 2), restaurant3 = nth(restaurant, 3))
。 - Steven Beaupré