2013-06-21 40 views
7

Tôi đã tóm tắt một cột của một khung dữ liệu (gọi DATA này) bao gồm các ID để tôi nhận được tổng số của mỗi ID trong cột đã cho. Tôi muốn chuyển đổi điều này sang một khung dữ liệu khác (gọi đây là TOTALNUM), vì vậy tôi có hai cột. Cột đầu tiên là chính ID và cột thứ hai là tổng số của mỗi ID. Điều này có thể không?Làm thế nào để chuyển đổi đầu ra tóm tắt thành một khung dữ liệu?

mẫu dữ liệu:

ids <- c(1,2,3,4,5,1,2,3,1,5,1,4,2,2,2) 
info <- c("A","B","C","A","B","C","A","B","C","A","B","C","A","B","C") 
DATA <- data.frame(ids, info) 
DATA$ids <- as.factor(DATA$ids) 

Những gì tôi muốn đặt trong một khung dữ liệu: hàng trên sẽ là cột đầu tiên trong một khung dữ liệu mới. Hàng thứ hai sẽ là cột thứ hai trong một khung dữ liệu mới.

summary(DATA$ids) 

Đây là những gì tôi muốn khung dữ liệu để trông giống như:

ids nums 
1  4 
2  5 
3  2 
4  2 
5  2 

Cảm ơn !!

Trả lời

5

Với cách tiếp cận của bạn, bạn có thể tận dụng thực tế là summary trả về một vector của tội, với những cái tên cho mỗi giá trị của ids:

> my.summary <- summary(DATA$ids) 
> data.frame(ids=names(my.summary), nums=my.summary) 
    ids nums 
1 1 4 
2 2 5 
3 3 2 
4 4 2 
5 5 2 

Hoặc - và phương pháp này là đơn giản hơn - bạn có thể tạo bảng tần suất dựa trên ids và sau đó chuyển đổi bảng đó thành một khung dữ liệu:

> as.data.frame(table(ids), responseName="nums") 
    ids nums 
1 1 4 
2 2 5 
3 3 2 
4 4 2 
5 5 2 
+0

Cảm ơn- Tôi không nhận ra điều đó thật đơn giản! Cách tiếp cận thứ hai là phương pháp tôi đã sử dụng. – Sheila

Các vấn đề liên quan