tôi có một dataframe trông như thế nàyCONCATENATE chuỗi theo nhóm với dplyr
> data <- data.frame(foo=c(1, 1, 2, 3, 3, 3), bar=c('a', 'b', 'a', 'b', 'c', 'd'))
> data
foo bar
1 1 a
2 1 b
3 2 a
4 3 b
5 3 c
6 3 d
Tôi muốn tạo ra một bars_by_foo cột mới đó là nối các giá trị của thanh bằng foo. Vì vậy, các dữ liệu mới sẽ trông như thế này:
foo bar bars_by_foo
1 1 a ab
2 1 b ab
3 2 a a
4 3 b bcd
5 3 c bcd
6 3 d bcd
Tôi đã hy vọng rằng những điều sau đây sẽ làm việc:
p <- function(v) {
Reduce(f=paste, x = v)
}
data %>%
group_by(foo) %>%
mutate(bars_by_foo=p(bar))
Nhưng mã mà mang lại cho tôi một lỗi
Error: incompatible types, expecting a character vector
.
Tôi đang làm gì sai?
Oh sự sụp đổ = "" là sự khác biệt! Nếu không có nó không hoạt động, đó là lý do tại sao tôi đã viết chức năng trợ giúp. – crf
Cũng lưu ý rằng sự sụp đổ có thể là bất cứ điều gì nó, chỉ có thể không được NULL. Bạn có thể sử dụng collapse = "" hoặc collapse = "," nếu bạn muốn. –