2010-10-21 39 views
36

Tôi là người mới và đã tìm kiếm trong một giờ qua về cách thực hiện chức năng đơn giản trong R.Tổng các hàng trong data.frame hoặc ma trận

Tôi có một khung dữ liệu rất lớn với các hàng như quan sát và cột đánh dấu. Tôi muốn tạo cột mới chứa tổng số cột được lựa chọn cho mỗi quan sát sử dụng R.

Nếu tôi có 200 cột và 100 hàng, tôi muốn tạo cột mới có 100 hàng với tổng các cột từ 43 đến 167. Các cột có 1 hoặc 0. Với cột mới chứa tổng của mỗi hàng, tôi sẽ có thể sắp xếp các cá nhân có các dấu hiệu di truyền nhất.

Tôi cảm thấy đó là một cái gì đó gần:

data$new=sum(data$[,43:167]) 
+5

truy cập www.rseek.org và nhập "tổng các hàng". Lần truy cập đầu tiên cung cấp cho bạn thông tin bạn cần. Bạn có thể muốn đánh dấu trang web đó, vì vậy bạn sẽ không mất thêm một giờ tìm kiếm aroud ;-). –

+2

Xem thêm plugin Firefox rseek: http://mycroft.mozdev.org/search-engines.html?name=rseek –

Trả lời

50

bạn có thể sử dụng rowSums

rowSums(data) nên cung cấp cho bạn những gì bạn muốn.

+6

Và đối với vấn đề OP 'dữ liệu $ new <- rowSums (dữ liệu [43: 167])' – Marek

+0

oops xin lỗi vì điều đó. – Greg

+1

Để tiết kiệm thời gian của ai đó, có lẽ: tránh nhầm lẫn với chức năng 'rowsum' mà làm cái gì khác! – Augustin

23

Chức năng rowSums (như Greg đề cập) sẽ làm những gì bạn muốn, nhưng bạn đang trộn kỹ thuật trong câu trả lời của bạn, không sử dụng "$" khi sử dụng "[]", mã của bạn sẽ trông giống như sau:

data$new <- rowSums(data[,43:167]) 

Nếu bạn muốn sử dụng một hàm khác ngoài tổng, hãy xem? Áp dụng cho việc áp dụng các chức năng chung trên hàng hoặc cột.

+0

Tôi không chắc tại sao tôi gặp lỗi này: Lỗi trong rowSums (incomeData): 'x' phải là số – munmunbb

+1

@munmunbb, bạn nhận được lỗi đó vì 'incomeData' không phải là số. Sử dụng một cái gì đó như 'str (incomeData)' để xem nó là gì, sau đó có thể chuyển đổi nó thành một ma trận số. –

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