Tôi muốn thêm một hậu tố hoặc tiền tố với hầu hết các tên biến trong một data.frame, điển hình là sau khi tất cả họ đã được biến đổi một cách nào đó và trước khi thực hiện tham gia. Tôi không có một cách để làm điều này mà không phá vỡ đường ống của tôi.Thêm tiền tố hoặc hậu tố đối với hầu hết data.frame tên biến trong công việc R đường ống
Ví dụ, với các dữ liệu này:
library(dplyr)
set.seed(1)
dat14 <- data.frame(ID = 1:10, speed = runif(10), power = rpois(10, 1),
force = rexp(10), class = rep(c("a", "b"),5))
Tôi muốn để có được kết quả này (lưu ý tên biến):
class speed_mean_2014 power_mean_2014 force_mean_2014
1 a 0.5572500 0.8 0.5519802
2 b 0.2850798 0.6 1.0888116
cách tiếp cận hiện tại của tôi là:
means14 <- dat14 %>%
group_by(class) %>%
select(-ID) %>%
summarise_each(funs(mean(.)))
names(means14)[2:length(names(means14))] <- paste0(names(means14)[2:length(names(means14))], "_mean_2014")
có một thay thế cho rằng dòng cuối cùng vụng về mà phá vỡ lên ống của tôi? Tôi đã xem select()
và rename()
nhưng không muốn chỉ định rõ ràng từng tên biến, vì tôi thường muốn đổi tên tất cả ngoại trừ một biến duy nhất và có thể có khung dữ liệu rộng hơn nhiều so với ví dụ này.
Tôi đang tưởng tượng một lệnh đường ống cuối cùng mà xấp xỉ chức năng làm-up này:
appendname(cols = 2:n, str = "_mean_2014", placement = "suffix")
nào không tồn tại như xa như tôi biết.
sử dụng tốt '% <>%' và cảm ơn bạn đã đăng liên kết, luôn đọc tốt như một người bồi dưỡng – infominer
cảm ơn, tôi hoàn toàn yêu thích toán tử '% <>%', nó rất hữu ích, vì các tác vụ đó thường xuất hiện, bạn cũng có thể sử dụng nó để tính toán lại hoặc làm tròn một số cột, như 'df $ meancolumn% <>% round() ', v.v., nó xuất hiện rất thường xuyên và chỉ giúp bạn tiết kiệm rất nhiều văn bản – grrgrrbla
Chắc chắn là một cải tiến, cảm ơn. Tôi sử dụng '% <>%' thường xuyên để thay thế 'df <- df %>% ...' nhưng nó không bao giờ xảy ra với tôi để sử dụng nó cho các kiểu dữ liệu khác như vectơ. Ví dụ của bạn với 'round()' khá súc tích! –