2017-04-26 5 views
1

Ich habe eine data.frame von Zellen mit einer Mischung aus Zahlen und Zeichen. Zum BeispielVerwenden Sie mixedsort für eine ausgewählte Gruppe von Zellen, R

data(iris) 

iris$comb<-paste(iris$Sepal.Length,'-',iris$Species) 

iris$comb2<-paste(iris$Sepal.Width,'-',iris$Species) 

head(iris[,6:7]) 

    comb  comb2 
1 5.1 - setosa 3.5 - setosa 
2 4.9 - setosa 3 - setosa 
3 4.7 - setosa 3.2 - setosa 
4 4.6 - setosa 3.1 - setosa 
5 5 - setosa 3.6 - setosa 
6 5.4 - setosa 3.9 - setosa 

Ich mag Gruppen von Zellen auf ihrem numerischen Wert sortieren, und ich kann mit gtools::mixedsort() dies tun. Ich habe jedoch mehrere Spalten, die dies benötigen, und ich möchte nur alle 3 Zeilen in einer Spalte unabhängig vom Rest der Spalte sortieren. Der (sehr) lange Weg, dies zu tun wäre

library(gtools) 

mixedsort(iris[1:3,6],decreasing=TRUE) 
mixedsort(iris[4:6,6],decreasing=TRUE) 

Ich bin nur nicht sicher, wie durch kleine Bündel von Zellen wie diese Schleife. Ich würde jede Hilfe sehr schätzen.

Antwort

1

Wir erstellen eine Gruppenvariable gl und anschließend mit mutate_at die Spalten von Interesse geben Sie die Funktion anwenden

library(gtools) 
library(dplyr) 
iris %>% 
    group_by(grp = as.integer(gl(n(), 3, n()))) %>% 
    mutate_at(vars(matches("comb")), funs(mixedsort(., decreasing = TRUE))) %>% 
    ungroup() %>% 
    select(-grp) 
+1

Sie beantwortet haben ziemlich viele meiner Fragen, und ich sehe "schon einige Fragen im Allgemeinen . Ich schätze deine Bemühungen sehr. Vielen Dank! –

Verwandte Themen