Aggregation and Restructuring data (from “R in Action”)

a következő bevezető bejegyzés az R új felhasználóinak szól.

ez egy vendég cikket Dr. Robert I. Kabacoff, az alapító (az egyik) az első online r oktatóanyagok honlapok: Quick-R. Kabacoff nemrégiben kiadta az “R in Action” című könyvet, amely részletes áttekintést nyújt az R nyelvről, különféle példák alapján, amelyek bemutatják R jellemzőit (adatmanipuláció, statisztikai módszerek, grafika stb.). Kabacoff előző vendégbejegyzése bemutatta az adatokat.frame objektumok R.

az olvasók ezt a blogot, van egy 38% kedvezmény ki a “R in Action” könyv (valamint az összes többi könyveket, pBooks és MEAPs a Manning publishing house), egyszerűen a kód használatával rblogg38 elérésekor pénztár.

beszéljünk most az adatok Összesítéséről és Átstrukturálásáról R-ben:

összesítés és szerkezetátalakítás

R számos hatékony módszert kínál az adatok összesítésére és átalakítására. Az adatok összesítésekor a megfigyelések csoportjait a megfigyeléseken alapuló összefoglaló statisztikákkal helyettesíti. Az adatok átalakításakor megváltoztatja az adatok rendezését meghatározó struktúrát (sorokat és oszlopokat). Ez a cikk számos módszert ismertet ezeknek a feladatoknak a végrehajtására.

fogjuk használni az mtcars adatkeret, amely tartalmazza az alap telepítése R. Ez az adatkészlet, kivont Motor Trend magazin (1974), leírja a tervezési és teljesítmény jellemzőit (hengerek száma, elmozdulás, lóerő, mpg, és így tovább) 34 autók. Ha többet szeretne megtudni az adatkészletről, olvassa el a súgót(mtcars).

átültetés

az átültetés (sorok és oszlopok megfordítása) talán a legegyszerűbb módszer az adatkészlet átalakítására. Használja a T () függvényt mátrix vagy adatkeret átültetéséhez. Az utóbbi esetben a sornevek változó (oszlop) nevekké válnak. Egy példa a következő felsorolásban található.

1.lista adatkészlet átültetése

az 1. lista az mtcars adatkészlet egy részhalmazát használja az oldalon lévő helytakarékosság érdekében. Az adatok átültetésének rugalmasabb módját fogja látni, amikor a cikk későbbi részében megvizsgáljuk a reshape csomagot.

adatok összesítése

viszonylag könnyű az adatokat R-ben összecsukni egy vagy több by változóval és egy meghatározott függvénnyel. A formátum

1
aggregate(x, by, FUN)

ahol x az összecsukandó adatobjektum, by az új megfigyelések kialakításához keresztezett változók listája, a FUN pedig az új megfigyelési értékeket alkotó összefoglaló statisztikák kiszámításához használt skalár függvény.

példaként összesítjük az mtcars-adatokat hengerek és sebességfokozatok száma szerint, az egyes numerikus változók átlagát adva vissza (lásd a következő felsorolást).

2.felsorolás összesített adatok

ezekben az eredményekben, csoport.Az 1 a hengerek számát jelenti (4, 6 vagy és csoport.A 2 a sebességfokozatok számát jelenti (3, 4 vagy 5). Például a 4 hengeres és 3 fokozatú autók átlaga 21,5 mérföld / gallon (mpg).

az aggregate() függvény használatakor a by változóknak egy listában kell lenniük (még akkor is , ha csak egy van). A csoportok egyéni nevét a listán belül deklarálhatja, például a by=list(Group használatával.cyl=cyl, csoport.fogaskerekek=fogaskerék).

a megadott funkció bármilyen beépített vagy felhasználó által biztosított funkció lehet. Ez nagy erőt ad az aggregált parancsnak. De amikor a hatalomról van szó, semmi sem veri a reshape csomagot.

a reshape package

a reshape package rendkívül sokoldalú megközelítés mind az átstrukturáláshoz, mind az adatkészletek összesítéséhez. E sokoldalúság miatt kissé kihívást jelenthet a tanulás.

lassan végigmegyünk a folyamaton, és egy kis adatkészletet használunk, hogy világos legyen, mi történik. Mivel a reshape nem szerepel az R szabványos telepítésében, egyszer telepítenie kell az install használatával.csomagok (“átformálás”).

alapvetően “megolvasztja” az adatokat, hogy minden sor egyedi ID-változó kombináció legyen. Ezután “leadja” az olvasztott adatokat bármilyen alakra, amire vágyik. A leadás során az adatokat bármely kívánt funkcióval összesítheti. Az adatkészlet, amellyel dolgozni fog, az 1. táblázatban látható.

1. táblázat az eredeti adatkészlet (mydata)

ID

idő

X1

X2

1 1 5 6
1 2 3 5
2 1 6 1
2 2 2 4

ebben az adatkészletben a mérések az utolsó kettő értékei oszlopok (5, 6, 3, 5, 6, 1, 2, 4). Minden mérést egyedileg azonosítanak az ID változók kombinációjával (ebben az esetben az ID, az idő és az, hogy a mérés X1 vagy X2-EN történik-e). Például az első sorban mért 5 értéket egyedileg azonosítjuk annak tudatában, hogy az 1.megfigyelésből (ID) származik, az 1. időpontban és az X1 változón.

olvadás

amikor megolvaszt egy adatkészletet, átalakítja azt olyan formátumba, ahol minden mért változó a saját sorában van, az egyedi azonosításhoz szükséges ID változókkal együtt. Ha az 1. táblázat adatait a következő kód használatával olvassa el

12
library(reshape)md <- melt(mydata, id=(c("id", "time")))

a 2. táblázatban bemutatott struktúrával végződik.

2. táblázat az olvasztott adatkészlet

ID

idő

változó

érték

1 1 X1 5
1 2 X1 3
2 1 X1 6
2 2 X1 2
1 1 X2 6
1 2 X2 5
2 1 X2 1
2 2 X2 4

vegye figyelembe, hogy meg kell adnia az egyes mérések egyedi azonosításához szükséges változókat (ID és idő), és hogy a mérési változók nevét (X1 vagy X2) jelző változó automatikusan létrejön.

most, hogy az adatok olvasztott formában vannak, a cast() függvény segítségével bármilyen alakra átdolgozhatja azokat.

Casting

a cast() függvény olvasztott adatokkal kezdődik, és átalakítja azt egy megadott képlet és egy (opcionális) függvény segítségével, amelyet az adatok összesítésére használnak. A formátum

1
newdata <- cast(md, formula, FUN)

ahol md az olvasztott adatok, a formula leírja a kívánt végeredményt, a FUN pedig az (opcionális) összesítő függvény. A képlet a következő formában jelenik meg

1
rowvar1 + rowvar2 + … ~ colvar1 + colvar2 + …

ebben a képletben a rowvar1 + rowvar2 + … határozza meg a sorokat meghatározó keresztezett változók halmazát, a colvar1 + colvar2 + … pedig az oszlopokat meghatározó keresztezett változók halmazát. Lásd az 1. ábrán látható példákat. (kattintson a kép nagyításához)

1. ábra Az adatok átalakítása a melt() és cast() függvényekkel

mivel a jobb oldali képletek (d, e és f) nem tartalmaznak függvényt, az adatok átformálódnak. Ezzel szemben a bal oldali példák (a, b és c) az átlagot aggregáló függvényként határozzák meg. Így az adatokat nem csak átalakítják, hanem összesítik is. Például az (a) megadja az x1 és X2 átlagát az egyes megfigyelések időbeli átlagában. A (b) példa az x1 és X2 átlagos pontszámát adja meg az 1.és a 2. időpontban, a megfigyelések átlagában. A (c) pontban az 1.és a 2. időpontban minden egyes megfigyelés átlagos pontszáma van, átlagolva X1 és X2 felett.

mint látható, a melt() és cast() funkciók által nyújtott rugalmasság elképesztő. Sokszor van, amikor az elemzés előtt át kell alakítania vagy összesítenie kell adatait. Például az ismétlődő mérési adatok (olyan adatok, ahol minden egyes megfigyeléshez több mérést rögzítenek) elemzésekor általában a 2.táblázathoz hasonló hosszú formátumban kell elhelyeznie az adatokat.

Összegzés

az R in Action 5.fejezete áttekinti a tucatnyi matematikai, statisztikai és valószínűségi függvényt, amelyek hasznosak az adatok manipulálásához. Ebben a cikkben röviden áttekintettük az adatok összesítésének és szerkezetátalakításának számos módját.

ez a cikk először az “R in action” könyv 5.6 fejezeteként jelent meg, és a Manning Kiadó engedélyével jelent meg. Egyéb könyvek ebben a komoly, amely lehet, hogy érdekli a (Lásd az elején ezt a bejegyzést a kedvezmény kód):

  • Gépi tanulás akcióban Peter Harrington
  • Gnuplot akcióban (adatok megértése grafikonokkal) Philipp K. Janert



+