On 10/12/2018 08:58 AM, Dénes Tóth wrote:
On 10/12/2018 04:36 AM, Jeff Newmiller wrote:You said "add up"... so you did not mean to say that? Denes computed the mean...Nice catch, Jeff. Of course I wanted to use 'sum' instead of 'mean'.
Oh, and one more note: If you have NAs in your columns, 'sum' is rarely the aggregate statistic that you are after. Probably this is why my subconscious statistician suggested 'mean'.
On October 11, 2018 3:56:23 PM PDT, roslinazairimah zakaria <roslina...@gmail.com> wrote:Hi Denes, It works perfectly as I want! Thanks a lot. On Fri, Oct 12, 2018 at 6:29 AM Dénes Tóth <toth.de...@kogentum.hu> wrote:On 10/12/2018 12:12 AM, roslinazairimah zakaria wrote:Dear r-users, I have this data: structure(list(STUDENT_ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("AA15285", "AA15286"), class ="factor"),COURSE_CODE = structure(c(1L, 2L, 5L, 6L, 7L, 8L, 2L, 3L, 4L, 5L, 6L), .Label = c("BAA1113", "BAA1322", "BAA2113", "BAA2513", "BAA2713", "BAA2921", "BAA4273", "BAA4513"), class="factor"), PO1M = c(155.7, 48.9, 83.2, NA, NA, NA, 48.05, 68.4, 41.65, 82.35, NA), PO1T = c(180, 70, 100, NA, NA, NA, 70, 100, 60, 100, NA), PO2M = c(NA, NA, NA, 37, NA, NA, NA, NA, NA, NA, 41), PO2T = c(NA, NA, NA, 50, NA, NA, NA, NA, NA, NA, 50), X = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), X.1 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names =c("STUDENT_ID","COURSE_CODE", "PO1M", "PO1T", "PO2M", "PO2T", "X", "X.1"), class = "data.frame", row.names = c(NA, -11L)) I want to combine the same Student ID and add up all the values forPO1M,PO1T,...,PO2T obtained by the same ID.dat <- structure(list(STUDENT_ID = structure(c(1L, 1L, 1L, 1L, 1L,1L,2L, 2L, 2L, 2L, 2L), .Label = c("AA15285", "AA15286"), class ="factor"),COURSE_CODE = structure(c(1L, 2L, 5L, 6L, 7L, 8L, 2L, 3L, 4L, 5L, 6L), .Label = c("BAA1113", "BAA1322", "BAA2113", "BAA2513", "BAA2713", "BAA2921", "BAA4273", "BAA4513"), class = "factor"), PO1M = c(155.7, 48.9, 83.2, NA, NA, NA, 48.05, 68.4, 41.65, 82.35, NA), PO1T = c(180, 70, 100, NA, NA, NA, 70, 100, 60, 100, NA), PO2M = c(NA, NA, NA, 37, NA, NA, NA, NA, NA, NA, 41), PO2T = c(NA, NA, NA, 50, NA, NA, NA, NA, NA, NA, 50), X = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), X.1 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names =c("STUDENT_ID","COURSE_CODE", "PO1M", "PO1T", "PO2M", "PO2T", "X", "X.1"), class = "data.frame", row.names = c(NA, -11L)) # I assume you would like to add up the values with na.rm = TRUE meanFn <- function(x) mean(x, na.rm = TRUE) # see ?aggregate aggregate(dat[, c("PO1M", "PO1T", "PO2M")], by = dat["STUDENT_ID"], FUN = meanFn) # if you have largish or large data library(data.table) dat2 <- as.data.table(dat) dat2[, lapply(.SD, meanFn), by = STUDENT_ID, .SDcols = c("PO1M", "PO1T", "PO2M")] Regards, DenesHow do I do that? Thank you for any help given.
-- Dr. Tóth Dénes ügyvezető Kogentum Kft. Tel.: 06-30-2583723 Web: www.kogentum.hu ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.