Мы можем воспользоваться возможностью утилизации R здесь.Вы можете прочитать CSV, как он есть в R, а затем вы можете изменить его на
data.frame(V1 = df$V1 , V2 = unlist(df[-1]))
# V1 V2
# Evaluator 5
# Parser 10
# Tokenizer 19
# Evaluator 9
# Parser 5
# Tokenizer 3
# Evaluator 2
# Parser 16
# Tokenizer 7
# Evaluator 8
# Parser 2
# Tokenizer 10
, где V1
- первый столбец кадра данных.
Если нам нужночтобы отсортировать каждую группу в порядке убывания, мы можем создать переменную группировки и arrange
.Каждая группа состоит из исходного числа записей в V1
, в данном случае это 3, и мы сортируем в порядке убывания в этих группах.
library(dplyr)
data.frame(V1 = df$V1 , V2 = unlist(df[-1])) %>%
arrange(rep(1:(n()/length(df$V1)), each = length(df$V1)), -V2)
# V1 V2
#1 Tokenizer 19
#2 Parser 10
#3 Evaluator 5
#4 Evaluator 9
#5 Parser 5
#6 Tokenizer 3
#7 Parser 16
#8 Tokenizer 7
#9 Evaluator 2
#10 Tokenizer 10
#11 Evaluator 8
#12 Parser 2
Или гораздо лучший подход с использованием gather
library(dplyr)
df %>%
gather(Type, Value, -V1) %>%
arrange(Type, -Value) %>%
select(-Type)
# V1 Value
#1 Tokenizer 19
#2 Parser 10
#3 Evaluator 5
#4 Evaluator 9
#5 Parser 5
#6 Tokenizer 3
#7 Parser 16
#8 Tokenizer 7
#9 Evaluator 2
#10 Tokenizer 10
#11 Evaluator 8
#12 Parser 2
data
df <- structure(list(V1 = structure(1:3, .Label = c("Evaluator", "Parser",
"Tokenizer"), class = "factor"), V2 = c(5L, 10L, 19L), V3 = c(9L,
5L, 3L), V4 = c(2L, 16L, 7L), V5 = c(8L, 2L, 10L)), .Names = c("V1",
"V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA,
-3L))