获取新数据帧中列A的每个值的列B的所有值

时间:2018-08-20 10:40:07

标签: r dataframe

我有一个包含两列的数据框。我想创建一个新的数据框,其中列出了第一列中第一列的每个唯一值的第二列的所有值。我不想使用数据表。

经过几次试验和错误,我提出了以下建议。我想知道是否有更简单的(一步式),更快或更理想的方法来实现此目的,因为我将在其上运行的实际数据帧非常大。

$('i[data-toggle="tooltip"]').tooltip({
    animated: 'fade',
    placement: 'right'
});

谢谢。

4 个答案:

答案 0 :(得分:1)

使用tidyverse

library(tidyverse)
 df%>%
   group_by(a)%>%
   summarise(bs=glue::collapse(b,","))
# A tibble: 3 x 2
      a bs  
  <dbl> <chr>
1    1. 6,7  
2    2. 8,9  
3    3. 10   

答案 1 :(得分:1)

一种base R方式

aggregate(b ~ a, df, FUN = toString)
#     a    b
#1    1 6, 7
#2    2 8, 9
#3    3   10

如果要保持输入数字,也许尝试创建一个列表列。

(df_new <- aggregate(b ~ a, df, FUN = list))
#  a    b
#1 1 6, 7
#2 2 8, 9
#3 3   10

str(df_new)
#'data.frame':  3 obs. of  2 variables:
# $ a: num  1 2 3
# $ b:List of 3
#  ..$ 1: int  6 7
#  ..$ 2: int  8 9
#  ..$ 3: int 10

答案 2 :(得分:1)

aggregate(b ~ a, df, paste)

  a    b
1 1 6, 7
2 2 8, 9
3 3   10

答案 3 :(得分:0)

我们可以使用data.table

library(data.table)
setDT(df)[, .(b = toString(b)), by = a]
#   a    b
#1: 1 6, 7
#2: 2 8, 9
#3: 3   10