Van egy data.frame
objektumom:
(dd <- data.frame(b = factor(c("Mag", "Köz", "Mag", "Ala"),
levels = c("Ala", "Köz", "Mag"), ordered = TRUE),
x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
z = c(1, 1, 1, 2)))
## b x y z
## 1 Mag A 8 1
## 2 Köz D 3 1
## 3 Mag A 9 1
## 4 Ala C 9 2
Szeretném több oszlop szerint is sorbarendezni. Mi a leghatékonyabb módja ennek?
- You must login to post comments
data.frame
esetén (Figyelem: nem data.table
!!!) alapvetően az order
függvényt lehet használni. PL.:
dd[with(dd, order(-z, b)), ]
## b x y z
## 4 Ala C 9 2
## 2 Köz D 3 1
## 1 Mag A 8 1
## 3 Mag A 9 1
vagy ugye with
nélkül, de több hibalehetőséggel:
dd[order(-dd$z, dd$b), ]
## b x y z
## 4 Ala C 9 2
## 2 Köz D 3 1
## 1 Mag A 8 1
## 3 Mag A 9 1
Lehet persze ügyeskedni a sort
függvénnyel is (ami vektorok sorberendezésére találtak ki, de akár az index.return
paraméter révén, akár a taRifx
csomag használatával sort(dd, f= ~ -z + b ) )
, de a bencmark értékek azt mutatják, hogy nem éri meg.
Tehát összefoglalóan: a jó megoldás az order
parancs.
Itt jegyezném meg, hogy a data.table
csomag sok csábító megoldást nyújt ezen a téren is:)
Lásd bővebben: http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r
- You must login to post comments
Please login first to submit.