Tôi có một data.frame với nhiều cột (~ 50). Một số trong số đó là ký tự, một số là số và 3 trong số chúng tôi sử dụng để nhóm.R: tóm tắt nhiều cột (số, ký tự) và loại bỏ NA
tôi cần phải:
- loại bỏ NA từ cột số
- tính toán giá trị trung bình của mỗi cột số
- trích xuất các phần tử đầu tiên của các cột nhân vật
Giả sử, chúng tôi đang sử dụng dữ liệu iris đã sửa đổi như sau:
data(iris)
iris$year <- rep(c(2000,3000),each=25) ## for grouping
iris$color <- rep(c("red","green","blue"),each=50) ## character column
iris[1,] <- NA ## introducing NAs
Tôi có tổng cộng ~ 50 cột, số và ký tự được trộn lẫn với nhau. Tôi đã thử một cái gì đó như:
giris <- group_by(iris, Species, year)
cls <- unlist(sapply(giris, class)) ## find out classes
action <- ifelse(cls == "numeric", "mean", "first")
action <- paste(action)
summarise_each(giris, action)
Điều tôi nhận được có nghĩa là cho tất cả các cột trong một nhóm theo sau với các cột có giá trị đầu tiên trong nhóm tương ứng. Và NA không được xử lý ... Mà không phải là chính xác những gì tôi tìm kiếm ...
Giúp đỡ bất cứ ai?
Tôi nghĩ bạn có thể muốn thêm 'na.omit()' ở trên 'group_by', nhưng đây là ý chính của câu hỏi. – JasonAizkalns
@ JasonAizkalns, tôi không nghĩ vậy - điều này có khả năng sẽ xóa nhiều hàng cần lưu giữ. Nhưng tôi đồng ý rằng một 'bộ lọc (! Is.na (Loài) &! Is.na (năm))' sẽ có ý nghĩa –
Đây là một giải pháp làm việc thực sự tốt đẹp và (quan trọng nhất) cũng cho phép để có được một cái nhìn thoáng qua về những gì đang đi theo mui xe của summaryise_each. Tôi thực sự, REALLY biết ơn vì điều đó, Doncendo :-). Đồng thời, bạn có nghĩ rằng có thể có một cách để tăng tốc nó? – rpl