Hvordan vil man endre denne inngangen (med sekvensen: tid, inn, ut, filer):
Time In Out Files
1 2 3 4
2 3 4 5
Til denne utgangen (med sekvensen: tid, ut, inn, filer)?
Time Out In Files
1 3 2 4
2 4 3 5
Her er dummy R-dataene:
table <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5))
table
## Time In Out Files
##1 1 2 3 4
##2 2 3 4 5
Datarammen din har fire kolonner, for eksempel df[,c(1,2,3,4)]
.
Legg merke til at det første kommaet betyr at alle radene skal beholdes, og 1,2,3,4 refererer til kolonnene.
For å endre rekkefølgen som i spørsmålet ovenfor gjør du df2[,c(1,3,2,4)]
.
Hvis du vil skrive ut denne filen som en csv-fil, gjør du write.csv(df2, file="somedf.csv")
.
Du kan også bruke delmengdefunksjonen:
data <- subset(data, select=c(3,2,1))
Du bør bruke []-operatoren som i de andre svarene, men det kan være nyttig å vite at du kan utføre en delmengde- og en kolonneordningsoperasjon i en enkelt kommando.
Oppdater:
Du kan også bruke select-funksjonen fra dplyr-pakken:
data = data %>% select(Time, out, In, Files)
Jeg er ikke sikker på effektiviteten, men takket være dplyr&# 39s syntaks bør denne løsningen være mer fleksibel, spesielt hvis du har mange kolonner. Følgende vil for eksempel omorganisere kolonnene i mtcars-datasettet i motsatt rekkefølge:
mtcars %>% select(carb:mpg)
Og følgende vil omorganisere bare noen kolonner, og forkaste andre:
mtcars %>% select(mpg:disp, hp, wt, gear:qsec, starts_with('carb'))
Les mer om dplyr's select-syntaks.