我想在字符串中总结两个变量。让我们说这是我的身份
#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
答案 0 :(得分:1)
您可以使用paste
和sep
合并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
但是,请注意; paste
和toString
愚蠢地将NA
强制转换为字符串。您可能需要换入na.omit
或使用na_if
。