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.