В общем, если вам нужно что-то делать повторно во фрейме данных, например, вычислять ранги, вы, вероятно, захотите изменить форму на длинные данные. Также обратите внимание, что то, что вы получили от cbind
- это матрица, а не фрейм данных - вероятно, не то, что вам нужно, поскольку это означает, что числовые переменные фактически отображаются в виде символов. Вместо cbind
используйте data.frame
или data_frame
(для тибля).
То, что я сделал здесь, собрано в длинный фрейм данных, сгруппированный по показателям (доход, количество или удовлетворение), а затем присвоил ранги на основе значения, имея в виду, что вам нужны разные заказы для удовлетворения и другие показатели .
library(tidyverse)
store <- c("NYC", "Chicago", "Boston")
source <- c("2018", "2018", "2018")
revenue <- c(10000, 50000, 2000)
quantity <- c(100, 50, 20)
satisfaction <- c(3, 2, 5)
df <- data_frame(store, source, revenue, quantity, satisfaction)
df %>%
gather(key = measure, value = value, revenue:satisfaction) %>%
group_by(measure) %>%
mutate(rank = ifelse(measure == "satisfaction", rank(value), rank(-value))) %>%
ungroup() %>%
select(-value) %>%
mutate(measure = paste(measure, "rank", sep = "_")) %>%
spread(key = measure, value = rank)
#> # A tibble: 3 x 5
#> store source quantity_rank revenue_rank satisfaction_rank
#> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 Boston 2018 3 3 3
#> 2 Chicago 2018 2 1 1
#> 3 NYC 2018 1 2 2
Создано в 2018-05-04 пакетом Представ (v0.2.0).