Tôi có một khung dữ liệu lớn (1616610 hàng, 255 cột) và tôi cần phải dán các giá trị duy nhất của mỗi cột dựa trên một khóa.Tổng hợp tất cả các giá trị duy nhất của mỗi cột của khung dữ liệu
Ví dụ:
> data = data.frame(a=c(1,1,1,2,2,3),
b=c("apples", "oranges", "apples", "apples", "apples", "grapefruit"),
c=c(12, 22, 22, 45, 67, 28),
d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"))
> data
a b c d
1 1 apples 12 Monday
2 1 oranges 22 Monday
3 1 apples 22 Monday
4 2 apples 45 Tuesday
5 2 apples 67 Wednesday
6 3 grapefruit 28 Tuesday
Những gì tôi cần là để tổng hợp mỗi giá trị duy nhất trong mỗi 255 cột, và trả về một khung dữ liệu mới có dải phân cách bởi dấu phẩy cho mỗi giá trị duy nhất. Như thế này:
a b c d
1 1 apples, oranges 12, 22 Monday
2 2 apples 45, 67 Tuesday, Wednesday
3 3 grapefruit 28 Thursday
Tôi đã cố gắng sử dụng aggregate
, như vậy:
output <- aggregate(data, by=list(data$a), paste, collapse=", ")
nhưng đối với một khung dữ liệu kích thước này, nó đã quá tốn thời gian (giờ), và thường lần tôi có để giết tất cả quá trình. Trên hết, điều này sẽ tổng hợp tất cả các giá trị và không chỉ các giá trị duy nhất. Có ai có bất cứ lời khuyên trên:
1) làm thế nào để cải thiện thời gian của sự kết hợp này cho dữ liệu lớn đặt
2) sau đó nhận được những giá trị độc đáo của từng lĩnh vực
BTW, đây là bài viết đầu tiên của tôi trên SO, vì vậy cảm ơn sự kiên nhẫn của bạn.
Đối với kích thước đó, bạn có thể sẽ cần 'data .table'. Tôi không tuyệt vời với cú pháp của nó, nhưng có những người ở đây. – alistaire
cảm ơn @alistaire. Tôi đã nghe những điều tốt đẹp về 'data.table' cho các tập dữ liệu lớn, và đã thử làm việc với nó, nhưng tôi dường như không thể tìm ra cú pháp cho vấn đề này. – bab2155
Cảm ơn @ G.Gothendieck! Điều đó làm việc tốt – bab2155