{count, plural, one {Cursus} other {Cursussen}}
Data reshaping in R is zoiets als rijen en kolommen rangschikken op jouw manier, zodat je ze kunt gebruiken volgens jouw wensen; meestal worden gegevens als een dataframe-indeling in R gebruikt om dataverwerking te doen met functies zoals 'rbind()', 'cbind()', enz.
In dit proces hervorm je de gegevens of organiseer je ze opnieuw in rijen en kolommen. Reshaping is het herorganiseren van gegevens op een specifieke manier die je nodig hebt om de data verder te verwerken.
Je data maken
Laten we een generator voor willekeurige getallen maken en kolommen genereren om ze te concateneren in het dataframe. Voeg ook een id toe voor later gebruik. 'set.seed(123)' wordt gebruikt om de willekeurige getallen te produceren waarbij dezelfde steekproef op elke machine kan worden gereproduceerd door iedereen die het gebruikt. Er worden drie variabelen gemaakt: colm1, colm2, colm3. Met behulp van 'sample()' worden waarden van 1 tot 15 gegenereerd, en dezelfde waarde kan herhaald worden. Ook wordt een dataframe gebruikt om gegevens in de tabel op te slaan, en er wordt een id toegevoegd, wat een uniek nummer is.
set.seed(123)
N <- 15
colm1 <- sample(1:15, N, replace=TRUE)
colm2 <- sample(1:15, N, replace=TRUE)
colm3 <- sample(1:15, N, replace=TRUE)
df_Temp <- data.frame(colm1, colm2,colm3)
df_Temp$id<-seq(nrow(df_Temp))
df_Temp
De bovenstaande code geeft de volgende output, waarin drie kolommen staan met de namen 'colm1', 'colm2', 'colm3' en een id van 1 tot 15. De waarden in de respectievelijke kolommen zijn gevuld met 1 tot 15, waarbij sommige getallen herhaald worden en sommige misschien niet voorkomen.
colm1 colm2 colm3 id
15 11 14 1
15 5 3 2
3 3 4 3
14 11 14 4
3 9 1 5
10 12 11 6
2 9 7 7
6 9 5 8
11 13 12 9
5 3 15 10
4 8 10 11
14 10 13 12
6 7 7 13
9 10 9 14
10 9 9 15
cbind-functie
Gebruik: gebruikt om vectoren, matrices en dataframes per kolom te combineren.
Parameters: cbind(v1,v2): v1,v2 kunnen vectoren, matrices of dataframes zijn
Laten we het voorbeeld van binden in actie bekijken.
id kan geselecteerd worden met 'df_Temp[,4]' terwijl 'df_Temp[,2]' 'colm2' van df_Temp selecteert zoals hieronder, wat fungeert als parameter voor 'cbind()' en wordt opgeslagen in de variabele 'cbindexample'. Verder kunnen de kolomnamen worden gewijzigd met behulp van 'colnames()', dat de variabele accepteert met de vectorinvoer c naar een nieuwe waarde, d.w.z. 'newid', 'new_colm2'.
cbindexample<-cbind(df_Temp[,4],df_Temp[,2])
colnames(cbindexample)<- c('newid','new_colm2')
cbindexample
De bovenstaande code geeft de volgende output, waaruit blijkt dat je twee kolommen, id en column2, kunt samenvoegen met de 'cbind'-functie om een nieuw dataframe te maken. Ook is de kolomnaam gewijzigd in 'new_colm2' terwijl 'id' is veranderd in 'newid'.
newid new_colm2
1 11
2 5
3 3
4 11
5 9
6 12
7 9
8 9
9 13
10 3
11 8
12 10
13 7
14 10
15 9
rbind-functie:
Gebruik: rbind wordt gebruikt om vectoren, matrices of dataframes per rij te combineren.
Parameters: rbind(v1,v2): v1,v2 kunnen vectoren, matrices of dataframes zijn.
Laten we een nieuwe vector maken genaamd 'new_vector' en die combineren met een nieuwe 'cbindexample' van 2 kolommen met behulp van 'rbind', waarbij beide worden geconcateneerd en opgeslagen in 'rbindexample'.
new_vector<- c(16,15)
rbindexample<- rbind(cbindexample,new_vector)
rbindexample
De bovenstaande code geeft de onderstaande output, waarin de nieuwe rij is toegevoegd met de waarden 16 en 15, respectievelijk in 'newid' en 'new_colm2'.
newid new_colm2
1 11
2 5
3 3
4 11
5 9
6 12
7 9
8 9
9 13
10 3
11 8
12 10
13 7
14 10
15 9
16 15
Melt-functie:
Gebruik: De melt-functie wordt gebruikt om een object in een gesmolten staat om te zetten; dat betekent dat het meerdere kolommen met data neemt en deze omzet naar één enkele kolom met data.
Parameters: melt(data,…,na.rm=FALSE/TRUE, value.name=”value” ),
Data: Input die je gaat melt-en.
...: Input die wordt doorgegeven aan of afkomstig is van.
Na.rm: Wordt gebruikt om expliciete missende waarden om te zetten in impliciete missende waarden.
Value.name: voor het opslaan van waarden in variabelen
Laten we naar code kijken waarmee je de data 'molt' met behulp van de id-variabele in één kolom met kolomnaam en waarde:
Laten we de bibliotheek 'reshape2' importeren met 'library()' en melt gebruiken om de kolommen van 'dfTemp' genaamd colm1, colm2, colm3 te combineren op één plek genaamd 'variable' volgens de variabele 'id'.
library(reshape2)
molted=melt(df_Temp,id.vars=c("id"))
molted
id variable value
1 colm1 15
2 colm1 15
3 colm1 3
4 colm1 14
5 colm1 3
6 colm1 10
7 colm1 2
8 colm1 6
9 colm1 11
10 colm1 5
11 colm1 4
12 colm1 14
13 colm1 6
14 colm1 9
15 colm1 10
1 colm2 11
2 colm2 5
3 colm2 3
4 colm2 11
5 colm2 9
6 colm2 12
7 colm2 9
8 colm2 9
9 colm2 13
10 colm2 3
11 colm2 8
12 colm2 10
13 colm2 7
14 colm2 10
15 colm2 9
1 colm3 14
2 colm3 3
3 colm3 4
4 colm3 14
5 colm3 1
6 colm3 11
7 colm3 7
8 colm3 5
9 colm3 12
10 colm3 15
11 colm3 10
12 colm3 13
13 colm3 7
14 colm3 9
15 colm3 9
De bovenstaande output laat zien dat wanneer je de data van colm1, colm2, colm3 smelt volgens de variabele id, deze worden gecombineerd in één kolom met de naam 'variable' en de waarden van de kolom in 'value' staan.
Dcast-functie:
Gebruik: wanneer je een gesmolten dataset hebt, kun je die met deze functie terugzetten naar het oorspronkelijke formaat.
Parameters: dcast(data,id_variable~value),
Data: gesmolten data die teruggezet moet worden naar de oorspronkelijke vorm.
Id_variable: één of meerdere kolommen die gebruikt zijn om de data van andere kolommen in één kolom te smelten.
~: na dit teken gebruiken we de waarden of de nieuwe gesmolten kolom van de gesmolten dataset.
Hieronder zie je code waarin 'reshape2' wordt geïmporteerd met 'library()', waar 'dcast()' als eerste parameter de data neemt waarop de 'molt()'-functie is uitgevoerd en het '~'-teken met id waar de nieuwe gesmolten kolom wordt gevormd.
library(reshape2)
dcast(molted,id~variable)
id colm1 colm2 colm3
1 15 11 14
2 15 5 3
3 3 3 4
4 14 11 14
5 3 9 1
6 10 12 11
7 2 9 7
8 6 9 5
9 11 13 12
10 5 3 15
11 4 8 10
12 14 10 13
13 6 7 7
14 9 10 9
15 10 9 9
Je ziet dat de data na de 'molt()'-functie weer terugverandert naar de oorspronkelijke dataset. Er zijn drie kolommen met hun respectieve waarden in de kolommen en id in een aparte kolom.
Transpose-functie:
Gebruik: Wordt gebruikt om rijen in kolommen te veranderen en kolommen in rijen.
Parameters: t(data), data is het dataframe dat je moet doorgeven om de transpose te krijgen.
Laten we de rij naar kolom en omgekeerd veranderen met behulp van de transpose-functie. Dat kan eenvoudig met 't(df_Temp)', zoals hieronder gedaan.
trans <- t(df_Temp)
trans
De bovenstaande code geeft de volgende output:
colm1 15 15 3 14 3 10 2 6 11 5 4 14 6 9 10
colm2 11 5 3 11 9 12 9 9 13 3 8 10 7 10 9
colm3 14 3 4 14 1 11 7 5 12 15 10 13 7 9 9
id 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Je ziet dat het dataframe met de vorm van 15 rijen en vier kolommen is veranderd in 15 kolommen en 3 rijen door de transpose van de data te nemen.
Gefeliciteerd
Gefeliciteerd, je bent aan het einde van deze tutorial gekomen!
In deze tutorial heb je verschillende functies van R behandeld zoals 'rbind()', 'cbind()', samen met 'Melt()', 'Dcast()', en tot slot de transpose-functie.
Wil je meer leren over R? Volg dan DataCamp's Introduction to R en bekijk onze R Packages: A Beginner's Tutorial.
Referenties:
Melt-functies
