根据组连接单词

时间:2018-04-10 13:06:24

标签: r

我有一个数据集如下 -

cust  cards
  a  ICICI
  a   HDFC
  a    PNB
  b  ICICI 
  b    PNB
  b   AMEX
  c    RCB
  c   AMEX
  d    PNB

我想为每个客户提供一条记录,因此我的输出应该像

Cust new_cards
a     ICICI,HDFC,PNB
b     ICICI,PNB,AMEX

我正在使用以下命令 -

x = group_by(data,cust)%>% mutate(new_cards=cat(cards,sep=","))

得到错误。请让我知道如何获得所需的输出,如果我也可以使用函数执行此操作?

2 个答案:

答案 0 :(得分:1)

使用toString与上一个答案略有不同:

library(tidyverse);
df %>%
    group_by(cust) %>%
    summarise(new_cards = toString(cards));
## A tibble: 4 x 2
#  cust  new_cards
#  <fct> <chr>
#1 a     ICICI, HDFC, PNB
#2 b     ICICI, PNB, AMEX
#3 c     RCB, AMEX
#4 d     PNB

答案 1 :(得分:0)

这样做的正确方法是使用summarizepaste

data %>%
    group_by(cust) %>%
    summarize(new_cards = paste(cards, collapse = ', '))

在您的示例数据上,结果为

# A tibble: 4 x 2
  cust  new_cards
  <fct> <chr>
1 a     ICICI, HDFC, PNB
2 b     ICICI, PNB, AMEX
3 c     RCB, AMEX
4 d     PNB

cat函数误导了你,因为它命名错误:它没有连接字符串,它打印字符串(到终端或文件)。