Próbuję użyć arrange_()
z ciągiem znaków i w jednej z kolumn w porządku malejącym.arran_() wiele kolumn z porządku malejącym
library(dplyr) # R version 3.3.0 (2016-05-03) , dplyr_0.4.3
# data
set.seed(1)
df1 <- data.frame(grp = factor(c(1,2,1,2,1)),
x = round(runif(5,1,10), 2))
# grp x
# 1 1 3.39
# 2 2 4.35
# 3 1 6.16
# 4 2 9.17
# 5 1 2.82
Poniżej jest to, czego potrzebujesz, aby osiągnąć:
df1 %>% arrange(grp, -x)
df1 %>% arrange(grp, desc(x))
# grp x
# 1 1 6.16
# 2 1 3.39
# 3 1 2.82
# 4 2 9.17
# 5 2 4.35
w moim przypadku drugiej kolumny jest ciągiem:
#dynamic string
myCol <- "x"
#failed attempts
df1 %>% arrange_("grp", desc(myCol))
Error: incorrect size (1), expecting : 5
df1 %>% arrange_("grp", "desc(myCol)")
Error: object 'myCol' not found
df1 %>% arrange_(c("grp", "desc(myCol)"))
#wrong output
# grp x
# 1 1 3.39
# 2 1 6.16
# 3 1 2.82
# 4 2 4.35
# 5 2 9.17
Znalazłem podobne rozwiązanie here, ale nie mogła ona działać:
df1 %>% arrange_(.dots = c("grp", "desc(myCol)"))
Error: object 'myCol' not found
Czuje jak mi brakuje czegoś bardzo oczywistego, pomysły?
Tak, to są dobre alternatywy, życzę sobie, aby były ładniejsze rozwiązania unikające wklejania. – zx8754
@ zx8754 Dodałem opcję z 'interp', ale myślę, że ta z' wklejką' jest kompaktowa – akrun
Zgadzam się, wklejanie wydaje się być sposobem na przejście, "interp" sprawia, że wygląda jeszcze gorzej (bez urazy). – zx8754