我有一个数据集如下 -
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=","))
得到错误。请让我知道如何获得所需的输出,如果我也可以使用函数执行此操作?
答案 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)
这样做的正确方法是使用summarize
和paste
:
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
函数误导了你,因为它命名错误:它没有连接字符串,它打印字符串(到终端或文件)。