podaci.wide <- read.table(header=T, text='
 ispitanik pol merenje1 merenje2 merenje3
       1    M      7.9   12.3     10.7
       2    Z      6.3   10.6     11.1
       3    Z      9.5   13.1     13.8
       4    M     11.5   13.4     12.9
 ')
# kolona sa subjektima mora biti tipa "factor"
podaci.wide$ispitanik <- factor(podaci.wide$ispitanik)

podaci.long <- read.table(header=T, text='
 ispitanik  pol     merenje        mera
         1   M     merenje1         7.9
         1   M     merenje2        12.3
         1   M     merenje3        10.7
         2   Z     merenje1         6.3
         2   Z     merenje2        10.6
         3   Z     merenje1         9.5
         3   Z     merenje2        13.1
         3   Z     merenje3        13.8
         4   M     merenje1        11.5
         4   M     merenje2        13.4
         4   M     merenje3        12.9
 ')
# kolona sa subjektima mora biti tipa "factor"
podaci.long$ispitanici <- factor(podaci.long$ispitanik)

podaci.long <- read.table(header=T, text='
 ispitanik  pol     merenje        mera
         1   M     merenje1         7.9
         1   M     merenje2        12.3
         1   M     merenje3        10.7
         2   Z     merenje1         6.3
         2   Z     merenje2        10.6
         3   Z     merenje1         9.5
         3   Z     merenje2        13.1
         3   Z     merenje3        13.8
         4   M     merenje1        11.5
         4   M     merenje2        13.4
         4   M     merenje3        12.9
 ')
# kolona sa subjektima mora biti tipa "factor"
podaci.long$ispitanici <- factor(podaci.long$ispitanik)

library(reshape2)

# id.vars: varijable koje treba da ostanu ali ne i da budu deljene po merenjima (neponovljena merenja)
melt(podaci.wide, id.vars=c("ispitanik","pol"))

novipodaci.long <- melt(podaci.wide, id.vars=c("ispitanik","pol"), measure.vars=c("merenje1", "merenje2", "merenje3" ), variable.name="merenje", value.name="mera")
novipodaci.long <- melt(podaci.wide,
        # id.vars - varijable koje treba da ostanu ali ne i da budu deljene
		# po merenjima (neponovljena merenja)
    id.vars=c("ispitanik","pol"),
        # measure.vars - kolone koje treba spojiti
    measure.vars=c("merenje1", "merenje2", "merenje3" ),
        # variable.name - ime kolone koja identifikuje merenje
        # value.name - naziv varijable sa merama
    variable.name="merenje", 
    value.name="mera")


podaci2.wide <- read.table(header=T, sep=";", text='
ispitanik; pol; merenje1; merenje2; merenje3; neponovljeno
1; M; 7.9; 12.3; 10.7; 1.2
2; Z; 6.3; 10.6; 11.1; 2.2
3; Z; 9.5; 13.1; 13.8; 3.2
4; M; 11.5; 13.4; 12.9; 4.2
')
#nije specifikovana varijabla "neponovljeno"
#pa e biti isputena
novipodaci2.long <- melt(podaci2.wide, id.vars=c("ispitanik","pol"), measure.vars=c("merenje1", "merenje2", "merenje3" ), variable.name="merenje", value.name="mera")
fix(novipodaci2.long)
# kada je specifikovana zadrana je
# ali ima istu vrednost za svako merenje
novipodaci3.long <- melt(podaci2.wide, id.vars=c("ispitanik","pol", "neponovljeno"), measure.vars=c("merenje1", "merenje2", "merenje3" ), variable.name="merenje", value.name="mera")
fix(novipodaci3.long)
#promena naziva nivoa merenja
levels(novipodaci3.long$merenje)[levels(novipodaci3.long$merenje)=="merenje1"] <- "prvo"
levels(novipodaci3.long$merenje)[levels(novipodaci3.long$merenje)=="merenje2"] <- "drugo"
levels(novipodaci3.long$merenje)[levels(novipodaci3.long$merenje)=="merenje3"] <- "trece"
fix(novipodaci3.long)

# sortiranje
novipodaci3.long <- novipodaci3.long[ order(novipodaci3.long$ispitanik, novipodaci3.long$ispitanik), ]
fix(novipodaci3.long)

# iz long u wide format
# library(reshape2)

novipodaci3.wide <- dcast(novipodaci3.long , ispitanik + pol + neponovljeno ~ merenje, value.var="mera")
fix(novipodaci3.wide)








