2017-04-26 8 views
1

数字と文字の組み合わせを含むセルのdata.frameがあります。例選択したセルグループに混合ソートを使用する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 

については 私は彼らの数値に基づいてセルのグループをソートしたい、と私はgtools::mixedsort()でこれを行うことができます。しかし、私はこれを必要とするいくつかの列を持っており、残りの列とは無関係に、列内の3行ごとに並べ替えるだけです。これを行うには非常に長い道のりがあります

library(gtools) 

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

私はちょうどこのような細胞の束をどのようにループするのか分かりません。私は何か助けていただければ幸いです。

答えて

1

我々はglを使用してグループ化変数を作成し、mutate_atを使用すると、あなたは私の質問のかなりの数に答えていると私は一般的に「かなりの数の質問を参照してください機能

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

を適用するために、関心の列を指定します。私は本当にあなたの努力に感謝します。ありがとう! –

関連する問題