Tôi có một khung dữ liệu mà tôi muốn thêm một hàng bổ sung tổng các giá trị cho các cột. Ví dụ, Hãy nói rằng tôi có dữ liệu này:Làm cách nào để thêm hàng vào khung dữ liệu có tổng số?
x <- data.frame(Language=c("C++", "Java", "Python"),
Files=c(4009, 210, 35),
LOC=c(15328,876, 200),
stringsAsFactors=FALSE)
dữ liệu trông như thế này:
Language Files LOC
1 C++ 4009 15328
2 Java 210 876
3 Python 35 200
bản năng của tôi là để làm điều này:
y <- rbind(x, c("Total", colSums(x[,2:3])))
Và công trình này, nó tính toán tổng số:
> y
Language Files LOC
1 C++ 4009 15328
2 Java 210 876
3 Python 35 200
4 Total 4254 16404
Prob lem đang là Files and cột LỘC đều được chuyển đổi thành các chuỗi:
> y$LOC
[1] "15328" "876" "200" "16404"
Tôi hiểu rằng điều này xảy ra bởi vì tôi đã tạo ra một vector c("Total", colSums(x[,2:3])
với đầu vào có cả số và chuỗi, và nó chuyển đổi tất cả các yếu tố để một loại phổ biến để tất cả các phần tử vectơ giống nhau. Sau đó, điều tương tự cũng xảy ra với các cột Tệp và LOC.
Cách nào tốt hơn để thực hiện việc này?
Cá nhân, tôi không khuyên bạn nên lưu trữ dữ liệu trong tên miền - đó là những biến số dành cho! – hadley
Nói chung, tôi đồng ý. Tôi cũng có xu hướng làm theo lời khuyên của @ csgillespie về việc không trộn dữ liệu thô và thống kê tóm tắt trong cùng một đối tượng. Như OP chỉ ra tuy nhiên, nó không thực sự là một vấn đề trong trường hợp này kể từ khi câu hỏi xoay quanh việc trình bày dữ liệu, không phải bất kỳ phân tích thêm. – Chase
Tương đương tidyverse là gì? – thadk