calculate median from data.table columns in R -
i trying calculate median value across number of columns, data bit funky. looks following example.
library(data.table) dt <- data.table("id" = c(1,2,3,4),"none" = c(0,5,5,3), "ten" = c(3,2,5,4),"twenty" = c(0,2,3,1)) id none ten twenty 1: 1 0 3 0 2: 2 5 2 2 3: 3 5 5 3 4: 4 3 4 1 in table column represents number of occurrences of value. wanting calculate median occurrence.
for example id = 1
median(c(10, 10, 10)) is calculation wanting create.
for id = 2
median(c(0, 0, 0, 0, 0, 10, 10, 20, 20)) i have tried using rep() , lapply() limited success , after clear guidance on how might achieved. understand likes of rep() having hard code value repeated (e.g. rep(0,2) or rep(10,2)) , expect. struggling create list or vector repetitions each column.
here's data.table way (assuming unique id):
dt[, median(rep(c(0, 10, 20), c(none, ten, twenty))), by=id] # id v1 # 1: 1 10 # 2: 2 0 # 3: 3 10 # 4: 4 10 this attempt @eddi's answer without reshaping (which tend use last resort).