Tôi có một câu hỏi đơn giản về tập hợp các giá trị trong R.kết hợp các giá trị trong hàng dựa trên các điều kiện phù hợp trong R
Giả sử tôi có một dataframe:
DF <- data.frame(col1=c("Type 1", "Type 1B", "Type 2"), col2=c(1, 2, 3))
mà trông như thế này:
col1 col2
1 Type 1 1
2 Type 1B 2
3 Type 2 3
Tôi nhận thấy rằng tôi có Type 1
và Type 1B
trong dữ liệu, vì vậy tôi muốn kết hợp Type 1B
vào Type 1
.
Vì vậy, tôi quyết định sử dụng dplyr
:
filter(DF, col1=='Type 1' | col1=='Type 1B') %>%
summarise(n = sum(col2))
Nhưng bây giờ tôi cần phải tiếp tục đi với nó:
DF2 <- data.frame('Type 1', filter(DF, col1=='Type 1' | col1=='Type 1B') %>%
summarise(n = sum(col2)))
Tôi đoán tôi muốn cbind
này DF2 mới trở lại DF gốc, nhưng điều đó có nghĩa là tôi phải đặt tên cột để nhất quán:
names(DF2) <- c('col1', 'col2')
OK , Bây giờ tôi có thể rbind:
rbind(DF2, DF[3,])
Kết quả? Nó hoạt động ....
col1 col2
1 Type 1 3
3 Type 2 3
... nhưng ugh! Thật kinh khủng! Phải có cách tốt hơn để kết hợp các giá trị đơn giản.
Hiện đã nhận được một cách khái quát hơn để làm một cái gì đó đơn giản như vậy, không có? Chắc chắn một hoạt động đơn giản như vậy không cần phải bao gồm sự phù hợp với loại regex !! –
Trong một dòng ngay bây giờ. Nhưng bạn sẽ cần 'gsub' hoặc tìm một mẫu khác để nhận ra rằng' type 1' và 'type1B' là tương tự nhau. Việc tổng hợp có thể được thực hiện với 'aggregate',' dplyr', 'data.table', v.v. –