如何从相同的记录 ID 添加变量,但在 R 中有多个名称?

How to add variables from the same record id but with multiple names in R?

我在尝试整理数据时遇到了一个问题。我有一个如下所示的数据框:

ID price  location
1  10.2    A
2   9.0    B
2   9.0    C
3   8.5    F
3   8.5    G

对于每个唯一 ID,除位置外,所有列都相同。我想将 table 旋转成这样:

ID price  location
1  10.2    A
2   9.0    B C
3   8.5    F G

我想删除重复的 ID 并将不同的位置一起移动到一列中。我试过 pivot_wider() 函数,但没有成功。 如果有人可以提供帮助,我将不胜感激。谢谢!

您可以使用 mutatenest()

library(tidyverse)

dfr%>%group_by(ID, price)%>%nest()%>%
   mutate(location = map(data, ~select(.x, location)))%>%
   select(ID, price, location)%>%ungroup()

# A tibble: 3 x 3
     ID price location        
  <dbl> <dbl> <list>          
1     1  10.2 <tibble [1 × 1]>
2     2   9   <tibble [2 × 1]>
3     3   8.5 <tibble [2 × 1]>

更新:

使用这个:

dfr%>%group_by(ID, price)%>%nest()%>%
  mutate(location = map(data, ~stringi::stri_paste(.x$location,collapse=',')))%>%
  unnest(location)%>%
  select(ID, price, location)%>%ungroup()

# A tibble: 3 x 3
     ID price location
  <dbl> <dbl> <chr>   
1     1  10.2 A       
2     2   9   B,C     
3     3   8.5 F,G  

更简单的方法是:

dfr%>%group_by(ID, price)%>%
  summarise(location = stringi::stri_paste(location,collapse=','))

# A tibble: 3 x 3
# Groups:   ID [3]
     ID price location
  <dbl> <dbl> <chr>       
1     1  10.2 A           
2     2   9   B,C         
3     3   8.5 F,G