У меня есть этот пример набора данных, содержащий 3 процедуры, две переменные ответа (D, вар) для 3-х классов (о, л, ч):собрать две группы столбцов с tidyr
# fungic D_o Var_o D_l Var_l D_h Var_h
# 1 AZ_BF 343.6 25756 223.8 20127 442.5 22843
# 2 AZ_CIPRO 186.6 25756 58.2 20127 311.7 22843
# 3 AZ_SOLA 382.6 25756 205.6 20127 520.5 22843
d = structure(list(fungic = c("AZ_BF", "AZ_CIPRO", "AZ_SOLA"), D_o = c(343.6, 186.6, 382.6), Var_o = c(25756L, 25756L, 25756L), D_l = c(223.8,
58.2, 205.6), Var_l = c(20127L, 20127L, 20127L), D_h = c(442.5,
311.7, 520.5), Var_h = c(22843L, 22843L, 22843L)), .Names = c("fungic",
"D_o", "Var_o", "D_l", "Var_l", "D_h", "Var_h"), row.names = c(NA,3L), class = "data.frame")
Я хочу, чтобы собрать столбцы, которые имеют ту же самую вторую часть названия Col, то есть, все D вместе, и весь вар вместе, сохраняя уровень класса, как это:
fungic C D Var
1 AZ_BF o 343.6 25756
4 AZ_BF o 223.8 25756
7 AZ_BF o 442.5 25756
10 AZ_BF l 343.6 20127
13 AZ_BF l 223.8 20127
16 AZ_BF l 442.5 20127
19 AZ_BF h 343.6 22843
22 AZ_BF h 223.8 22843
25 AZ_BF h 442.5 22843
2 AZ_CIPRO o 186.6 25756
5 AZ_CIPRO o 58.2 25756
8 AZ_CIPRO o 311.7 25756
11 AZ_CIPRO l 186.6 20127
14 AZ_CIPRO l 58.2 20127
17 AZ_CIPRO l 311.7 20127
20 AZ_CIPRO h 186.6 22843
23 AZ_CIPRO h 58.2 22843
26 AZ_CIPRO h 311.7 22843
3 AZ_SOLA o 382.6 25756
6 AZ_SOLA o 205.6 25756
9 AZ_SOLA o 520.5 25756
12 AZ_SOLA l 382.6 20127
15 AZ_SOLA l 205.6 20127
18 AZ_SOLA l 520.5 20127
21 AZ_SOLA h 382.6 22843
24 AZ_SOLA h 205.6 22843
27 AZ_SOLA h 520.5 22843
Я сделал это с этим ужасным кодом ...
d1 = d %>% gather(var_Class, D, starts_with("D_")) %>%
gather(C, Var, starts_with("Var_"))
d2 = d1[1:27,]
d3 = d2 %>% mutate(C=sapply(strsplit(C, split='_', fixed=TRUE),function(x) (x[2])))
d3 = d3[order(d3$fungic),]
Может кто-нибудь помочь улучшить его? Я не хочу, чтобы попасть в первенствует пожалуйста ..
Вы совершенно правы @akrun, но я был совершенно неправильно ...
К сожалению, я на самом деле это нужно:
fungic class D var
AZ_BF o 343.6 25756
AZ_CIPRO o 186.6 25756
AZ_SOLA o 382.6 25756
AZ_BF l 223.8 20127
AZ_CIPRO l 58.2 20127
AZ_SOLA l 205.6 20127
AZ_BF h 442.5 22843
AZ_CIPRO h 311.7 22843
AZ_SOLA h 520.5 22843
'd%>% собираются (вар, вал, -1)%>% отдельно (вар, с ('переменная', 'класс'))%>% spread (var, val) ' – alistaire
вы правы! благодаря! – Juanchi