2012-09-06 32 views
5

Tôi đang sử dụng ddply ngay bây giờ. Nó rất dễ dàng để đối phó với các con số. Chẳng hạn như lấy độ lệch trung bình hoặc tiêu chuẩn của phân nhóm.ddply tóm tắt hoạt động chuỗi

Nhưng tôi gặp khó khăn khi xử lý các chuỗi. Tôi muốn kết hợp các chuỗi trong cùng một cột trong mỗi nhóm con, nhưng tôi không thể làm điều đó. Tôi đã thử cbindpaste, v.v. Bất kỳ ai cũng có thể cung cấp trợ giúp?

+2

Không có ví dụ cụ thể, có thể tái sản xuất, không, chúng tôi có thể không cung cấp nhiều trợ giúp. – joran

+0

Vui lòng tạo một [ví dụ tái sản xuất] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) để được trợ giúp ... – ptocquin

Trả lời

8

Thêm collapse="" để dán tuyên bố của bạn

ddply(mtcars, .(carb), summarize, cyl_concatenated = paste(cyl, collapse = "")) 
# carb cyl_concatenated 
#1 1   4664444 
#2 2  8444888444 
#3 3    888 
#4 4  6686688888 
#5 6    6 
#6 8    8 
5

tôi thấy Dason có một cách tiếp cận. Tôi thà giữ những thứ riêng biệt riêng biệt và sẽ đề xuất:

ddply(mtcars, .(carb), summarize, cyl_list = list(as.character(cyl))) 
#----------- 
    carb      cyl_list 
1 1   4, 6, 6, 4, 4, 4, 4 
2 2 8, 4, 4, 4, 8, 8, 8, 4, 4, 4 
3 3      8, 8, 8 
4 4 6, 6, 8, 6, 6, 8, 8, 8, 8, 8 
5 6       6 
6 8       8 

Bạn cũng có thể sửa đổi Dason để sử dụng collapse = "," trông giống như trên nhưng có cấu trúc khác. Với list() bạn cần phải chuyển đổi thành ký tự khi sử dụng ví dụ đó hoặc bạn nhận được mã hóa số nguyên của biến yếu tố.