R/descriptive_APA.R

Defines functions descriptive_APA

Documented in descriptive_APA

# descriptive_APA(dataset = mtcars, group = mtcars$vs, measures = c('mpg', 'disp', 'hp', 'drat', 'wt', 'qsec'))
# descriptive_APA(dataset = mtcars, group = mtcars$vs, measures = c('mpg', 'disp', 'hp', 'drat', 'wt', 'qsec'), bonferroni.correction = T)
descriptive_APA <- function(dataset, group, measures = '', filename = NULL, bonferroni.correction = FALSE){
  require(compute.es)

  if(nlevels(as.factor(group)) == 2) {
    g.name <- (as.character(substitute(group)[[3]]))
    gg <- levels(as.factor(group))
    lev <- (as.numeric(as.factor(group)))
    name.g.1 <- paste(substitute(gg))[[1]]
    name.g.2 <- paste(substitute(gg))[[2]]
    dataset <- dataset[, measures]

    t.res   <- list()
    p.value <- list()
    t.value <- list()

    t.APA   <- list()
    v.APA   <- list()

    d       <- list()

    M.1     <- list()
    M.2     <- list()
    SD.1    <- list()
    SD.2    <- list()
    N.1     <- list()
    N.2     <- list()
    CV.1    <- list()
    CV.2    <- list()

    for(i in 1:dim(dataset)[2]) {
      N.1[i]  <- length(na.omit(dataset[,i][group == name.g.1]))
      N.2[i]  <- length(na.omit(dataset[,i][group == name.g.2]))
      M.1[i]  <- mean(dataset[,i][group == name.g.1], na.rm=TRUE)
      M.2[i]  <- mean(dataset[,i][group == name.g.2], na.rm=TRUE)
      SD.1[i] <- sd(dataset[,i][group == name.g.1], na.rm=TRUE)
      SD.2[i] <- sd(dataset[,i][group == name.g.2], na.rm=TRUE)
      CV.1[i] <- round((as.numeric(SD.1[i])/as.numeric(M.1[i]))*100, 2)
      CV.2[i] <- round((as.numeric(SD.2[i])/as.numeric(M.2[i]))*100, 2)

      v <- var.test(dataset[,i] ~ group)

      if(v$p.value < .05)
      {var.equal <- FALSE}
      else {var.equal <- TRUE}

      t.res      <- t.test(dataset[,i] ~ group, var.equal = var.equal)
      p.value[i] <- t.res$p.value
      t.value[i] <- t.res$statistic
      d[i]       <- abs(compute.es::tes(as.numeric(t.value[i]), as.numeric(N.1[i]), as.numeric(N.2[i]), verbose = FALSE)$d)
      t.APA[i]   <- paste('t(', round(t.res$parameter, 2),')=',round(abs(t.res$statistic),2),
                          ', p', symnum(t.res$p.value, legend = F, corr = FALSE, na = FALSE,
                                        cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", ">.05")),
                          ', d=', d[i],
                          sep = '')
      v.APA[i] <- paste('F(', as.numeric(v$parameter[1]),',',as.numeric(v$parameter[2]),')=',round(as.numeric(v$statistic),2),
                        ', p=', round(as.numeric(v$p.value),4), sep = '')
    }
    p.value <- unlist(p.value)

    #-------------------------------------------|
    #-------------------------------------------| Bonferroni
    if(bonferroni.correction == TRUE) {
      N <- length(measures)
      p.value <- p.value * N
      } else {
        p.value <- p.value
        }
    #-------------------------------------------| Bonferroni
    #-------------------------------------------|

    df <- data.frame(
      N1      = unlist(N.1),
      M1      = round(unlist(M.1),2),
      SD1     = round(unlist(SD.1),2),
      CV1     = unlist(CV.1),

      N2      = unlist(N.2),
      M2      = round(unlist(M.2),2),
      SD2     = round(unlist(SD.2),2),
      CV2     = unlist(CV.2),

      Msd1    = paste('(','M=',round(unlist(M.1),2),', SD=',round(unlist(SD.1),2),')', sep = ''),
      Msd2    = paste('(','M=',round(unlist(M.2),2),', SD=',round(unlist(SD.2),2),')', sep = ''),

      t.value = round(abs(unlist(t.value)), 2),
      sym     = symnum((p.value), legend = F, corr = FALSE, na = FALSE,
                       cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 100), symbols = c("***", "**", "*", ".", " ")),
      p       = symnum((p.value), legend = F, corr = FALSE, na = FALSE,
                       cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 0.1, 100), symbols = c("<.0001", "<.001", "<.01", "<.05", " ", "  ")),
      p.exact = round(unlist(p.value), 6),
      "Cohen d"       = abs(unlist(d)),

      t.APA   = unlist(t.APA),
      v.APA   = unlist(v.APA)
    )

    sign <- intToUtf8(0177)
    df$M.sd1  <- paste(df$M1, sign, df$SD1)
    df$M.sd2  <- paste(df$M2, sign, df$SD2)

    if(bonferroni.correction == TRUE) {
      names(df)[names(df) == 'p.exact'] <- 'p.corrected'
    } else {
      names(df)[names(df) == 'p.exact'] <- 'p.exact'

    }

    names(df)[names(df) == 'N1'] <- paste('N_', name.g.1, sep = '')
    names(df)[names(df) == 'N2'] <- paste('N_', name.g.2, sep = '')
    names(df)[names(df) == 'M1'] <- paste('M_', name.g.1, sep = '')
    names(df)[names(df) == 'M2'] <- paste('M_', name.g.2, sep = '')
    names(df)[names(df) == 'SD1'] <- paste('SD_', name.g.1, sep = '')
    names(df)[names(df) == 'SD2'] <- paste('SD_', name.g.2, sep = '')
    names(df)[names(df) == 'CV1'] <- paste('CV_', name.g.1, sep = '')
    names(df)[names(df) == 'CV2'] <- paste('CV_', name.g.2, sep = '')
    names(df)[names(df) == 'Msd1'] <- paste('Msd_', name.g.1, sep = '')
    names(df)[names(df) == 'Msd2'] <- paste('Msd_', name.g.2, sep = '')
    names(df)[names(df) == 'M.sd1'] <- paste('M.sd_', name.g.1, sep = '')
    names(df)[names(df) == 'M.sd2'] <- paste('M.sd_', name.g.2, sep = '')

    rownames(df) <- measures

    if(!is.null(filename)) {
      if(grepl('.csv', filename)) {filename <- (filename)}
      else {filename <- paste(filename, '.csv', sep = '')}

      write.csv(df, file = filename)
      print(df)
      cat(paste('The file ', filename,' has been saved in ', getwd()), rep('\n', 3), sep = '')
    }

    if(is.null(filename)) {
      df <- df[, c(18,1,19,5,16,14,12,15)]
      print(df)
    }
  }


  #######################################################################################################################.
  #######################################################################################################################.
  #######################################################################################################################.
  #######################################################################################################################.

  if(nlevels(as.factor(group)) == 3) {
    g.name <- (as.character(substitute(group)[[3]]))
    gg <- levels(as.factor(group))
    lev <- (as.numeric(as.factor(group)))
    name.g.1 <- paste(substitute(gg))[[1]]
    name.g.2 <- paste(substitute(gg))[[2]]
    name.g.3 <- paste(substitute(gg))[[3]]
    # print(name.g.1)
    # print(name.g.2)
    # print(name.g.3)
    dataset <- dataset[, measures]


    M.1     <- list()
    M.2     <- list()
    M.3     <- list()
    SD.1    <- list()
    SD.2    <- list()
    SD.3    <- list()
    N.1     <- list()
    N.2     <- list()
    N.3     <- list()
    CV.1    <- list()
    CV.2    <- list()
    CV.3    <- list()

    res.AOV <- list()

    p_2.1 <- list()
    p_3.1 <- list()
    p_3.2 <- list()


    for(i in 1:dim(dataset)[2]) {
      N.1[i]  <- length(na.omit(dataset[,i][group == name.g.1]))
      N.2[i]  <- length(na.omit(dataset[,i][group == name.g.2]))
      N.3[i]  <- length(na.omit(dataset[,i][group == name.g.3]))
      M.1[i]  <- mean(dataset[,i][group == name.g.1], na.rm=TRUE)
      M.2[i]  <- mean(dataset[,i][group == name.g.2], na.rm=TRUE)
      M.3[i]  <- mean(dataset[,i][group == name.g.3], na.rm=TRUE)
      SD.1[i] <- sd(dataset[,i][group == name.g.1], na.rm=TRUE)
      SD.2[i] <- sd(dataset[,i][group == name.g.2], na.rm=TRUE)
      SD.3[i] <- sd(dataset[,i][group == name.g.3], na.rm=TRUE)
      CV.1[i] <- round((as.numeric(SD.1[i])/as.numeric(M.1[i]))*100, 2)
      CV.2[i] <- round((as.numeric(SD.2[i])/as.numeric(M.2[i]))*100, 2)
      CV.3[i] <- round((as.numeric(SD.3[i])/as.numeric(M.3[i]))*100, 2)


      aov.out <- aov(dataset[,i] ~ group)
      summm <- summary(aov.out)
      p <- summm[[1]][["Pr(>F)"]][[1]]
      f <- summm[[1]][["F value"]][[1]]
      degreeF <- paste('(',
                       summm[[1]][["Df"]][[1]], ',', summm[[1]][["Df"]][[2]],
                       ')', sep = ''
      )
      res.AOV[i] <- paste('F', degreeF, '=', round(f,2), ', ', 'p=', round(p, 4), sep = '')

      res <- TukeyHSD(aov.out)
      # print(res)
      p_2.1[i] <- symnum(res$group[1,4], legend = F, corr = FALSE, na = FALSE,
                         cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
      p_3.1[i] <- symnum(res$group[2,4], legend = F, corr = FALSE, na = FALSE,
                         cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
      p_3.2[i] <- symnum(res$group[3,4], legend = F, corr = FALSE, na = FALSE,
                         cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))

      # print(p_2.1)
      # print(p_3.1)
      # print(p_3.2)

      # t.res      <- t.test(dataset[,i] ~ group, var.equal = var.equal)
      # p.value[i] <- t.res$p.value
      # t.value[i] <- t.res$statistic
      # d[i]       <- abs(compute.es::tes(as.numeric(t.value[i]), as.numeric(N.1[i]), as.numeric(N.2[i]), verbose = FALSE)$d)
      # t.APA[i]   <- paste('t(', round(t.res$parameter, 2),')=',round(abs(t.res$statistic),2),
      #                     ', p', symnum(t.res$p.value, legend = F, corr = FALSE, na = FALSE,
      #                                   cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", ">.05")),
      #                     ', d=', d[i],
      #                     sep = '')
      # v.APA[i] <- paste('F(', as.numeric(v$parameter[1]),',',as.numeric(v$parameter[2]),')=',round(as.numeric(v$statistic),2),
      #                   ', p=', round(as.numeric(v$p.value),4), sep = '')
    }

    df <- data.frame(
      N1      = unlist(N.1),
      M1      = round(unlist(M.1),2),
      SD1     = round(unlist(SD.1),2),
      CV1     = unlist(CV.1),

      N2      = unlist(N.2),
      M2      = round(unlist(M.2),2),
      SD2     = round(unlist(SD.2),2),
      CV2     = unlist(CV.2),

      N3      = unlist(N.3),
      M3      = round(unlist(M.3),2),
      SD3     = round(unlist(SD.3),2),
      CV3     = unlist(CV.3),

      Msd1    = paste('(','M=',round(unlist(M.1),2),', SD=',round(unlist(SD.1),2),')', sep = ''),
      Msd2    = paste('(','M=',round(unlist(M.2),2),', SD=',round(unlist(SD.2),2),')', sep = ''),
      Msd3    = paste('(','M=',round(unlist(M.3),2),', SD=',round(unlist(SD.3),2),')', sep = ''),

      p_2.1 <- unlist(p_2.1),
      p_3.1 <- unlist(p_3.1),
      p_3.2 <- unlist(p_3.2),

      res.AOV <- unlist(res.AOV)



      # t.value = round(abs(unlist(t.value)), 2),
      # sym     = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
      #                  cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")),
      # p       = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
      #                  cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", " ", "  ")),
      # p.exact = round(unlist(p.value), 6),
      # "Cohen d"       = abs(unlist(d)),
      #
      # t.APA   = unlist(t.APA),
      # v.APA   = unlist(v.APA)
    )

    # print(colnames(df))

    sign <- intToUtf8(0177)
    df$M.sd1  <- paste(df$M1, sign, df$SD1)
    df$M.sd2  <- paste(df$M2, sign, df$SD2)
    df$M.sd3  <- paste(df$M3, sign, df$SD3)

    names(df)[names(df) == 'N1'] <- paste('N_', name.g.1, sep = '')
    names(df)[names(df) == 'N2'] <- paste('N_', name.g.2, sep = '')
    names(df)[names(df) == 'N3'] <- paste('N_', name.g.3, sep = '')
    names(df)[names(df) == 'M1'] <- paste('M_', name.g.1, sep = '')
    names(df)[names(df) == 'M2'] <- paste('M_', name.g.2, sep = '')
    names(df)[names(df) == 'M3'] <- paste('M_', name.g.3, sep = '')
    names(df)[names(df) == 'SD1'] <- paste('SD_', name.g.1, sep = '')
    names(df)[names(df) == 'SD2'] <- paste('SD_', name.g.2, sep = '')
    names(df)[names(df) == 'SD3'] <- paste('SD_', name.g.3, sep = '')
    names(df)[names(df) == 'CV1'] <- paste('CV_', name.g.1, sep = '')
    names(df)[names(df) == 'CV2'] <- paste('CV_', name.g.2, sep = '')
    names(df)[names(df) == 'CV3'] <- paste('CV_', name.g.3, sep = '')
    names(df)[names(df) == 'Msd1'] <- paste('Msd_', name.g.1, sep = '')
    names(df)[names(df) == 'Msd2'] <- paste('Msd_', name.g.2, sep = '')
    names(df)[names(df) == 'Msd3'] <- paste('Msd_', name.g.3, sep = '')
    names(df)[names(df) == 'M.sd1'] <- paste('M.sd_', name.g.1, sep = '')
    names(df)[names(df) == 'M.sd2'] <- paste('M.sd_', name.g.2, sep = '')
    names(df)[names(df) == 'M.sd3'] <- paste('M.sd_', name.g.3, sep = '')

    names(df)[names(df) == 'p_2.1....unlist.p_2.1.'] <- paste(name.g.2, '_',name.g.1, sep = '')
    names(df)[names(df) == 'p_3.1....unlist.p_3.1.'] <- paste(name.g.3, '_',name.g.1, sep = '')
    names(df)[names(df) == 'p_3.2....unlist.p_3.2.'] <- paste(name.g.2, '_',name.g.2, sep = '')
    names(df)[names(df) == 'res.AOV....unlist.res.AOV.'] <- 'F Statistics'
    # names(df)[names(df) == 'p_2.1....unlist.p_2.1.'] <- paste('p___', name.g.2, '_',name.g.1, '__|', sep = '')
    # names(df)[names(df) == 'p_3.1....unlist.p_3.1.'] <- paste('p___', name.g.3, '_',name.g.1, '__|', sep = '')
    # names(df)[names(df) == 'p_3.2....unlist.p_3.2.'] <- paste('p___', name.g.2, '_',name.g.2, '__|', sep = '')

    print(colnames(df))

    rownames(df) <- measures

    if(!is.null(filename)) {
      if(grepl('.csv', filename)) {filename <- (filename)}
      else {filename <- paste(filename, '.csv', sep = '')}

      write.csv(df, file = filename)
      print(df)
      cat(paste('The file ', filename,' has been saved in ', getwd()), rep('\n', 3), sep = '')
    }

    if(is.null(filename)) {
      # df <- df[, c(18,19,16,12,14,15)]
      df <- df[, c(20,1,
                   21,5,
                   22,9,
                   19,          # F statistics

                   16, 17, 18)] # p symbols
      print(df)
    }
  }




}















# descriptive_APA <- function(dataset, group, measures = '', filename = NULL){
#   require(compute.es)
#
#   if(nlevels(as.factor(group)) == 2) {
#     g.name <- (as.character(substitute(group)[[3]]))
#     gg <- levels(as.factor(group))
#     lev <- (as.numeric(as.factor(group)))
#     name.g.1 <- paste(substitute(gg))[[1]]
#     name.g.2 <- paste(substitute(gg))[[2]]
#     dataset <- dataset[, measures]
#
#     t.res   <- list()
#     p.value <- list()
#     t.value <- list()
#
#     t.APA   <- list()
#     v.APA   <- list()
#
#     d       <- list()
#
#     M.1     <- list()
#     M.2     <- list()
#     SD.1    <- list()
#     SD.2    <- list()
#     N.1     <- list()
#     N.2     <- list()
#     CV.1    <- list()
#     CV.2    <- list()
#
#     for(i in 1:dim(dataset)[2]) {
#       N.1[i]  <- length(na.omit(dataset[,i][group == name.g.1]))
#       N.2[i]  <- length(na.omit(dataset[,i][group == name.g.2]))
#       M.1[i]  <- mean(dataset[,i][group == name.g.1], na.rm=TRUE)
#       M.2[i]  <- mean(dataset[,i][group == name.g.2], na.rm=TRUE)
#       SD.1[i] <- sd(dataset[,i][group == name.g.1], na.rm=TRUE)
#       SD.2[i] <- sd(dataset[,i][group == name.g.2], na.rm=TRUE)
#       CV.1[i] <- round((as.numeric(SD.1[i])/as.numeric(M.1[i]))*100, 2)
#       CV.2[i] <- round((as.numeric(SD.2[i])/as.numeric(M.2[i]))*100, 2)
#
#       v <- var.test(dataset[,i] ~ group)
#
#       if(v$p.value < .05)
#       {var.equal <- FALSE}
#       else {var.equal <- TRUE}
#
#       t.res      <- t.test(dataset[,i] ~ group, var.equal = var.equal)
#       p.value[i] <- t.res$p.value
#       t.value[i] <- t.res$statistic
#       d[i]       <- abs(compute.es::tes(as.numeric(t.value[i]), as.numeric(N.1[i]), as.numeric(N.2[i]), verbose = FALSE)$d)
#       t.APA[i]   <- paste('t(', round(t.res$parameter, 2),')=',round(abs(t.res$statistic),2),
#                           ', p', symnum(t.res$p.value, legend = F, corr = FALSE, na = FALSE,
#                                         cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", ">.05")),
#                           ', d=', d[i],
#                           sep = '')
#       v.APA[i] <- paste('F(', as.numeric(v$parameter[1]),',',as.numeric(v$parameter[2]),')=',round(as.numeric(v$statistic),2),
#                         ', p=', round(as.numeric(v$p.value),4), sep = '')
#     }
#
#     df <- data.frame(
#       N1      = unlist(N.1),
#       M1      = round(unlist(M.1),2),
#       SD1     = round(unlist(SD.1),2),
#       CV1     = unlist(CV.1),
#
#       N2      = unlist(N.2),
#       M2      = round(unlist(M.2),2),
#       SD2     = round(unlist(SD.2),2),
#       CV2     = unlist(CV.2),
#
#       Msd1    = paste('(','M=',round(unlist(M.1),2),', SD=',round(unlist(SD.1),2),')', sep = ''),
#       Msd2    = paste('(','M=',round(unlist(M.2),2),', SD=',round(unlist(SD.2),2),')', sep = ''),
#
#       t.value = round(abs(unlist(t.value)), 2),
#       sym     = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
#                        cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")),
#       p       = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
#                        cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", " ", "  ")),
#       p.exact = round(unlist(p.value), 6),
#       "Cohen d"       = abs(unlist(d)),
#
#       t.APA   = unlist(t.APA),
#       v.APA   = unlist(v.APA)
#     )
#
#     sign <- intToUtf8(0177)
#     df$M.sd1  <- paste(df$M1, sign, df$SD1)
#     df$M.sd2  <- paste(df$M2, sign, df$SD2)
#
#     names(df)[names(df) == 'N1'] <- paste('N_', name.g.1, sep = '')
#     names(df)[names(df) == 'N2'] <- paste('N_', name.g.2, sep = '')
#     names(df)[names(df) == 'M1'] <- paste('M_', name.g.1, sep = '')
#     names(df)[names(df) == 'M2'] <- paste('M_', name.g.2, sep = '')
#     names(df)[names(df) == 'SD1'] <- paste('SD_', name.g.1, sep = '')
#     names(df)[names(df) == 'SD2'] <- paste('SD_', name.g.2, sep = '')
#     names(df)[names(df) == 'CV1'] <- paste('CV_', name.g.1, sep = '')
#     names(df)[names(df) == 'CV2'] <- paste('CV_', name.g.2, sep = '')
#     names(df)[names(df) == 'Msd1'] <- paste('Msd_', name.g.1, sep = '')
#     names(df)[names(df) == 'Msd2'] <- paste('Msd_', name.g.2, sep = '')
#     names(df)[names(df) == 'M.sd1'] <- paste('M.sd_', name.g.1, sep = '')
#     names(df)[names(df) == 'M.sd2'] <- paste('M.sd_', name.g.2, sep = '')
#
#     rownames(df) <- measures
#
#     if(!is.null(filename)) {
#       if(grepl('.csv', filename)) {filename <- (filename)}
#       else {filename <- paste(filename, '.csv', sep = '')}
#
#       write.csv(df, file = filename)
#       print(df)
#       cat(paste('The file ', filename,' has been saved in ', getwd()), rep('\n', 3), sep = '')
#     }
#
#     if(is.null(filename)) {
#       df <- df[, c(18,1,19,5,16,14,12,15)]
#       print(df)
#     }
#   }
#
#
#   #######################################################################################################################.
#   #######################################################################################################################.
#   #######################################################################################################################.
#   #######################################################################################################################.
#
#   if(nlevels(as.factor(group)) == 3) {
#     g.name <- (as.character(substitute(group)[[3]]))
#     gg <- levels(as.factor(group))
#     lev <- (as.numeric(as.factor(group)))
#     name.g.1 <- paste(substitute(gg))[[1]]
#     name.g.2 <- paste(substitute(gg))[[2]]
#     name.g.3 <- paste(substitute(gg))[[3]]
#     # print(name.g.1)
#     # print(name.g.2)
#     # print(name.g.3)
#     dataset <- dataset[, measures]
#
#
#     M.1     <- list()
#     M.2     <- list()
#     M.3     <- list()
#     SD.1    <- list()
#     SD.2    <- list()
#     SD.3    <- list()
#     N.1     <- list()
#     N.2     <- list()
#     N.3     <- list()
#     CV.1    <- list()
#     CV.2    <- list()
#     CV.3    <- list()
#
#     res.AOV <- list()
#
#     p_2.1 <- list()
#     p_3.1 <- list()
#     p_3.2 <- list()
#
#
#     for(i in 1:dim(dataset)[2]) {
#       N.1[i]  <- length(na.omit(dataset[,i][group == name.g.1]))
#       N.2[i]  <- length(na.omit(dataset[,i][group == name.g.2]))
#       N.3[i]  <- length(na.omit(dataset[,i][group == name.g.3]))
#       M.1[i]  <- mean(dataset[,i][group == name.g.1], na.rm=TRUE)
#       M.2[i]  <- mean(dataset[,i][group == name.g.2], na.rm=TRUE)
#       M.3[i]  <- mean(dataset[,i][group == name.g.3], na.rm=TRUE)
#       SD.1[i] <- sd(dataset[,i][group == name.g.1], na.rm=TRUE)
#       SD.2[i] <- sd(dataset[,i][group == name.g.2], na.rm=TRUE)
#       SD.3[i] <- sd(dataset[,i][group == name.g.3], na.rm=TRUE)
#       CV.1[i] <- round((as.numeric(SD.1[i])/as.numeric(M.1[i]))*100, 2)
#       CV.2[i] <- round((as.numeric(SD.2[i])/as.numeric(M.2[i]))*100, 2)
#       CV.3[i] <- round((as.numeric(SD.3[i])/as.numeric(M.3[i]))*100, 2)
#
#
#       aov.out <- aov(dataset[,i] ~ group)
#       summm <- summary(aov.out)
#       p <- summm[[1]][["Pr(>F)"]][[1]]
#       f <- summm[[1]][["F value"]][[1]]
#       degreeF <- paste('(',
#                        summm[[1]][["Df"]][[1]], ',', summm[[1]][["Df"]][[2]],
#                        ')', sep = ''
#       )
#       res.AOV[i] <- paste('F', degreeF, '=', round(f,2), ', ', 'p=', round(p, 4), sep = '')
#
#       res <- TukeyHSD(aov.out)
#       # print(res)
#       p_2.1[i] <- symnum(res$group[1,4], legend = F, corr = FALSE, na = FALSE,
#                       cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
#       p_3.1[i] <- symnum(res$group[2,4], legend = F, corr = FALSE, na = FALSE,
#                       cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
#       p_3.2[i] <- symnum(res$group[3,4], legend = F, corr = FALSE, na = FALSE,
#                       cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
#
#       # print(p_2.1)
#       # print(p_3.1)
#       # print(p_3.2)
#
#       # t.res      <- t.test(dataset[,i] ~ group, var.equal = var.equal)
#       # p.value[i] <- t.res$p.value
#       # t.value[i] <- t.res$statistic
#       # d[i]       <- abs(compute.es::tes(as.numeric(t.value[i]), as.numeric(N.1[i]), as.numeric(N.2[i]), verbose = FALSE)$d)
#       # t.APA[i]   <- paste('t(', round(t.res$parameter, 2),')=',round(abs(t.res$statistic),2),
#       #                     ', p', symnum(t.res$p.value, legend = F, corr = FALSE, na = FALSE,
#       #                                   cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", ">.05")),
#       #                     ', d=', d[i],
#       #                     sep = '')
#       # v.APA[i] <- paste('F(', as.numeric(v$parameter[1]),',',as.numeric(v$parameter[2]),')=',round(as.numeric(v$statistic),2),
#       #                   ', p=', round(as.numeric(v$p.value),4), sep = '')
#     }
#
#     df <- data.frame(
#       N1      = unlist(N.1),
#       M1      = round(unlist(M.1),2),
#       SD1     = round(unlist(SD.1),2),
#       CV1     = unlist(CV.1),
#
#       N2      = unlist(N.2),
#       M2      = round(unlist(M.2),2),
#       SD2     = round(unlist(SD.2),2),
#       CV2     = unlist(CV.2),
#
#       N3      = unlist(N.3),
#       M3      = round(unlist(M.3),2),
#       SD3     = round(unlist(SD.3),2),
#       CV3     = unlist(CV.3),
#
#       Msd1    = paste('(','M=',round(unlist(M.1),2),', SD=',round(unlist(SD.1),2),')', sep = ''),
#       Msd2    = paste('(','M=',round(unlist(M.2),2),', SD=',round(unlist(SD.2),2),')', sep = ''),
#       Msd3    = paste('(','M=',round(unlist(M.3),2),', SD=',round(unlist(SD.3),2),')', sep = ''),
#
#       p_2.1 <- unlist(p_2.1),
#       p_3.1 <- unlist(p_3.1),
#       p_3.2 <- unlist(p_3.2),
#
#       res.AOV <- unlist(res.AOV)
#
#
#
#       # t.value = round(abs(unlist(t.value)), 2),
#       # sym     = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
#       #                  cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")),
#       # p       = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
#       #                  cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", " ", "  ")),
#       # p.exact = round(unlist(p.value), 6),
#       # "Cohen d"       = abs(unlist(d)),
#       #
#       # t.APA   = unlist(t.APA),
#       # v.APA   = unlist(v.APA)
#     )
#
#     # print(colnames(df))
#
#     sign <- intToUtf8(0177)
#     df$M.sd1  <- paste(df$M1, sign, df$SD1)
#     df$M.sd2  <- paste(df$M2, sign, df$SD2)
#     df$M.sd3  <- paste(df$M3, sign, df$SD3)
#
#     names(df)[names(df) == 'N1'] <- paste('N_', name.g.1, sep = '')
#     names(df)[names(df) == 'N2'] <- paste('N_', name.g.2, sep = '')
#     names(df)[names(df) == 'N3'] <- paste('N_', name.g.3, sep = '')
#     names(df)[names(df) == 'M1'] <- paste('M_', name.g.1, sep = '')
#     names(df)[names(df) == 'M2'] <- paste('M_', name.g.2, sep = '')
#     names(df)[names(df) == 'M3'] <- paste('M_', name.g.3, sep = '')
#     names(df)[names(df) == 'SD1'] <- paste('SD_', name.g.1, sep = '')
#     names(df)[names(df) == 'SD2'] <- paste('SD_', name.g.2, sep = '')
#     names(df)[names(df) == 'SD3'] <- paste('SD_', name.g.3, sep = '')
#     names(df)[names(df) == 'CV1'] <- paste('CV_', name.g.1, sep = '')
#     names(df)[names(df) == 'CV2'] <- paste('CV_', name.g.2, sep = '')
#     names(df)[names(df) == 'CV3'] <- paste('CV_', name.g.3, sep = '')
#     names(df)[names(df) == 'Msd1'] <- paste('Msd_', name.g.1, sep = '')
#     names(df)[names(df) == 'Msd2'] <- paste('Msd_', name.g.2, sep = '')
#     names(df)[names(df) == 'Msd3'] <- paste('Msd_', name.g.3, sep = '')
#     names(df)[names(df) == 'M.sd1'] <- paste('M.sd_', name.g.1, sep = '')
#     names(df)[names(df) == 'M.sd2'] <- paste('M.sd_', name.g.2, sep = '')
#     names(df)[names(df) == 'M.sd3'] <- paste('M.sd_', name.g.3, sep = '')
#
#     names(df)[names(df) == 'p_2.1....unlist.p_2.1.'] <- paste(name.g.2, '_',name.g.1, sep = '')
#     names(df)[names(df) == 'p_3.1....unlist.p_3.1.'] <- paste(name.g.3, '_',name.g.1, sep = '')
#     names(df)[names(df) == 'p_3.2....unlist.p_3.2.'] <- paste(name.g.2, '_',name.g.2, sep = '')
#     names(df)[names(df) == 'res.AOV....unlist.res.AOV.'] <- 'F Statistics'
#     # names(df)[names(df) == 'p_2.1....unlist.p_2.1.'] <- paste('p___', name.g.2, '_',name.g.1, '__|', sep = '')
#     # names(df)[names(df) == 'p_3.1....unlist.p_3.1.'] <- paste('p___', name.g.3, '_',name.g.1, '__|', sep = '')
#     # names(df)[names(df) == 'p_3.2....unlist.p_3.2.'] <- paste('p___', name.g.2, '_',name.g.2, '__|', sep = '')
#
#     print(colnames(df))
#
#     rownames(df) <- measures
#
#     if(!is.null(filename)) {
#       if(grepl('.csv', filename)) {filename <- (filename)}
#       else {filename <- paste(filename, '.csv', sep = '')}
#
#       write.csv(df, file = filename)
#       print(df)
#       cat(paste('The file ', filename,' has been saved in ', getwd()), rep('\n', 3), sep = '')
#     }
#
#     if(is.null(filename)) {
#       # df <- df[, c(18,19,16,12,14,15)]
#       df <- df[, c(20,1,
#                    21,5,
#                    22,9,
#                    19,          # F statistics
#
#                    16, 17, 18)] # p symbols
#       print(df)
#     }
#   }
#
#
#
#
# }








# descriptive_APA(dataset = dat, group = dat$Group.3, measures = c('var1', 'var2', 'var3'))
# set.seed(40)
# dat <- data.frame(Group.3 = factor(rep(c('aa', 'bb','cc'), each=10)),
#                   var1 = c(sample(1:2, 10, replace=T),
#                            sample(c(1,3), 10, replace=T),
#                            sample(2:3, 10, replace=T)),
#                   var2 = c(sample(3:4, 10, replace=T),
#                            sample(c(4,5), 10, replace=T),
#                            sample(2:3, 10, replace=T)),
#                   var3 = c(sample(90:91, 10, replace=T),
#                            sample(c(85,90), 10, replace=T),
#                            sample(90:92, 10, replace=T)))
#
# descriptive_APA(dataset = mtcars, group = mtcars$factors3, measures = c('mpg', 'disp', 'hp', 'drat', 'wt', 'qsec'))
# descriptive_APA(dataset = dat, group = dat$Group.3, measures = c('var1', 'var2', 'var3'))
# mtcars$factors3 <- as.factor(c("aa","aa","aa","aa","aa","aa","aa","aa","aa","aa",
#                      "bb","bb","bb","bb","bb","bb","bb","bb","bb","bb",
#                      "cc","cc","cc","cc","cc","cc","cc","cc","cc","cc",
#                      "aa","bb"))
# aov.out <- aov(disp ~ factors3, data = mtcars)
# res <- TukeyHSD(aov.out)
# p_2.1 <- symnum(res$factors3[1,4], legend = F, corr = FALSE, na = FALSE,
#                 cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
# p_3.1 <- symnum(res$factors3[2,4], legend = F, corr = FALSE, na = FALSE,
#                 cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))
# p_3.2 <- symnum(res$factors3[3,4], legend = F, corr = FALSE, na = FALSE,
#                 cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " "))

# descriptive_APA(dataset = mtcars, group = mtcars$vs, measures = c('mpg', 'disp', 'hp', 'drat', 'wt', 'qsec'))
# descriptive_APA(dataset = mtcars, group = mtcars$vs, measures = c('mpg', 'disp', 'hp', 'drat', 'wt', 'qsec'), filename = 'prova')














#
#
# set.seed(40)
# dat <- data.frame(Group.3 = factor(rep(c('aa', 'bb','cc'), each=10)),
#                   var1 = c(sample(1:2, 10, replace=T),
#                                sample(c(1,3), 10, replace=T),
#                                sample(2:3, 10, replace=T)),
#                   var2 = c(sample(3:4, 10, replace=T),
#                                sample(c(4,5), 10, replace=T),
#                                sample(2:3, 10, replace=T)),
#                   var3 = c(sample(90:91, 10, replace=T),
#                                sample(c(85,90), 10, replace=T),
#                                sample(90:92, 10, replace=T)))
#
# descriptive_APA(dataset = dat, group = dat$Group.3, measures = c('var1', 'var2', 'var3'))
#
# dat.aov <- aov(Pleasing ~ Group.3, data=dat)
# summm <- summary(dat.aov)
# p <- summm[[1]][["Pr(>F)"]][[1]]
# f <- summm[[1]][["F value"]][[1]]
# degreeF <- paste('(',
#   summm[[1]][["Df"]][[1]], ',', summm[[1]][["Df"]][[2]],
#   ')', sep = ''
# )
# res.AOV <- paste('F', degreeF, '=', round(f,2), ', ', 'p=', round(p, 4), sep = '')
# dat.aov$df.residual

# descriptive_APA <- function(dataset, group, measures = '', filename = NULL){
#   require(compute.es)
#   g.name <- (as.character(substitute(group)[[3]]))
#   gg <- levels(as.factor(group))
#   lev <- (as.numeric(as.factor(group)))
#   name.g.1 <- paste(substitute(gg))[[1]]
#   name.g.2 <- paste(substitute(gg))[[2]]
#   dataset <- dataset[, measures]
#
#   # if(nlevels(as.factor(group)) == 2) {
#   #
#   # }
#
#   t.res   <- list()
#   p.value <- list()
#   t.value <- list()
#
#   t.APA   <- list()
#   v.APA   <- list()
#
#   d       <- list()
#
#   M.1     <- list()
#   M.2     <- list()
#   SD.1    <- list()
#   SD.2    <- list()
#   N.1     <- list()
#   N.2     <- list()
#   CV.1    <- list()
#   CV.2    <- list()
#
#   for(i in 1:dim(dataset)[2]) {
#     N.1[i]  <- length(na.omit(dataset[,i][group == name.g.1]))
#     N.2[i]  <- length(na.omit(dataset[,i][group == name.g.2]))
#     M.1[i]  <- mean(dataset[,i][group == name.g.1], na.rm=TRUE)
#     M.2[i]  <- mean(dataset[,i][group == name.g.2], na.rm=TRUE)
#     SD.1[i] <- sd(dataset[,i][group == name.g.1], na.rm=TRUE)
#     SD.2[i] <- sd(dataset[,i][group == name.g.2], na.rm=TRUE)
#     CV.1[i] <- round((as.numeric(SD.1[i])/as.numeric(M.1[i]))*100, 2)
#     CV.2[i] <- round((as.numeric(SD.2[i])/as.numeric(M.2[i]))*100, 2)
#
#     v <- var.test(dataset[,i] ~ group)
#
#     if(v$p.value < .05)
#     {var.equal <- FALSE}
#     else {var.equal <- TRUE}
#
#     t.res      <- t.test(dataset[,i] ~ group, var.equal = var.equal)
#     p.value[i] <- t.res$p.value
#     t.value[i] <- t.res$statistic
#     d[i]       <- abs(compute.es::tes(as.numeric(t.value[i]), as.numeric(N.1[i]), as.numeric(N.2[i]), verbose = FALSE)$d)
#     t.APA[i]   <- paste('t(', round(t.res$parameter, 2),')=',round(abs(t.res$statistic),2),
#                         ', p', symnum(t.res$p.value, legend = F, corr = FALSE, na = FALSE,
#                                       cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", ">.05")),
#                         ', d=', d[i],
#                         sep = '')
#     v.APA[i] <- paste('F(', as.numeric(v$parameter[1]),',',as.numeric(v$parameter[2]),')=',round(as.numeric(v$statistic),2),
#                       ', p=', round(as.numeric(v$p.value),4), sep = '')
#   }
#
#   df <- data.frame(
#     N1      = unlist(N.1),
#     M1      = round(unlist(M.1),2),
#     SD1     = round(unlist(SD.1),2),
#     CV1     = unlist(CV.1),
#
#     N2      = unlist(N.2),
#     M2      = round(unlist(M.2),2),
#     SD2     = round(unlist(SD.2),2),
#     CV2     = unlist(CV.2),
#
#     Msd1    = paste('(','M=',round(unlist(M.1),2),', SD=',round(unlist(SD.2),2),')', sep = ''),
#     Msd2    = paste('(','M=',round(unlist(M.2),2),', SD=',round(unlist(SD.2),2),')', sep = ''),
#
#     t.value = round(abs(unlist(t.value)), 2),
#     sym     = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
#                      cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")),
#     p       = symnum(unlist(p.value), legend = F, corr = FALSE, na = FALSE,
#                      cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("<.0001", "<.001", "<.01", "<.05", " ", "  ")),
#     p.exact = round(unlist(p.value), 6),
#     "Cohen d"       = abs(unlist(d)),
#
#     t.APA   = unlist(t.APA),
#     v.APA   = unlist(v.APA)
#   )
#
#   sign <- intToUtf8(0177)
#   df$M.sd1  <- paste(df$M1, sign, df$SD1)
#   df$M.sd2  <- paste(df$M2, sign, df$SD2)
#
#   names(df)[names(df) == 'N1'] <- paste('N_', name.g.1, sep = '')
#   names(df)[names(df) == 'N2'] <- paste('N_', name.g.2, sep = '')
#   names(df)[names(df) == 'M1'] <- paste('M_', name.g.1, sep = '')
#   names(df)[names(df) == 'M2'] <- paste('M_', name.g.2, sep = '')
#   names(df)[names(df) == 'SD1'] <- paste('SD_', name.g.1, sep = '')
#   names(df)[names(df) == 'SD2'] <- paste('SD_', name.g.2, sep = '')
#   names(df)[names(df) == 'CV1'] <- paste('CV_', name.g.1, sep = '')
#   names(df)[names(df) == 'CV2'] <- paste('CV_', name.g.2, sep = '')
#   names(df)[names(df) == 'Msd1'] <- paste('Msd_', name.g.1, sep = '')
#   names(df)[names(df) == 'Msd2'] <- paste('Msd_', name.g.2, sep = '')
#   names(df)[names(df) == 'M.sd1'] <- paste('M.sd_', name.g.1, sep = '')
#   names(df)[names(df) == 'M.sd2'] <- paste('M.sd_', name.g.2, sep = '')
#
#   rownames(df) <- measures
#
#   if(!is.null(filename)) {
#     if(grepl('.csv', filename)) {filename <- (filename)}
#     else {filename <- paste(filename, '.csv', sep = '')}
#
#     write.csv(df, file = filename)
#     print(df)
#     cat(paste('The file ', filename,' has been saved in ', getwd()), rep('\n', 3), sep = '')
#   }
#
#   if(is.null(filename)) {
#     df <- df[, c(18,19,16,12,14,15)]
#     print(df)
#   }
#
#
# }; descriptive_APA(dataset = mtcars, group = mtcars$vs, measures = c('mpg', 'disp', 'hp', 'drat', 'wt', 'qsec'))
alemiani/explora documentation built on May 28, 2019, 4:54 p.m.