在dplyr

时间:2016-10-06 01:24:59

标签: r dplyr

我想在字符串中总结两个变量。让我们说这是我的身份

 #visit

id  source1    source2 
 1    a          t
 2    c          l
 3    c          z
 1    b          x

第二个数据集:

 #transaction
 id    transactions 

 1       1
 3       2
 1       2

我想将这些数据加在一起,但同时将它们转换为字符串:

我可以为一个变量做一个(让我们说源1):

library(dplyr) 
%>%  left_join(visit, transaction, by="id") 
%>%  group_by( id)
%>%  summarise( Source = toString(unique(source1)), transactions =    toString(unique(transactions)) )

这给了我以下输出:

id     source       transactions
 1       a,b         1,2 
 2        c           NA
 3        c           2

但是我想总结两个变量:所以我的愿望输出就是这样的:

 id     source       transactions
 1       a,t > b,x   1,2 
 2       c,l         NA
 3       c,z         2

1 个答案:

答案 0 :(得分:1)

您可以使用pastesep合并collapse这两个变量:

visit %>% left_join(transaction) %>% 
    group_by(id) %>% 
    summarise(source = paste(unique(source1), unique(source2), sep = ', ', collapse = ' > '), 
              transaction = na_if(toString(unique(na.omit(transactions))), ''))

## # A tibble: 3 × 3
##      id      source transaction
##   <int>       <chr>       <chr>
## 1     1 a, t > b, x        1, 2
## 2     2        c, l        <NA>
## 3     3        c, z           2
但是,请注意; pastetoString愚蠢地将NA强制转换为字符串。您可能需要换入na.omit或使用na_if