df = read.csv("/home/backup/MOSAIC/MEDIATOR_Data/master_file/Mosaic_master_file_from_stata.csv" , fileEncoding = "latin1" , sep = ",") install.packages("readr") library(readr) df2 = read_csv("/home/backup/MOSAIC/MEDIATOR_Data/master_file/Mosaic_master_file_from_stata.csv" , col_names = T) foo = as.data.frame(colnames(df2)) head(foo) head(df2) # sam sam_df = read.csv("/home/backup/MOSAIC/MEDIATOR_Data/mediator_data_analysis/SAM-oct-2015/SAM_adults_publication/SAM_only.csv" , fileEncoding = "latin1") # extract the 36 HC # master file for HC: called "Mediators_for_HC.csv" in /home/tanu/MASTERS/Birkbeck/MSc_Project/MOSAIC/MEDIATOR_Data/master_file all_healthy<- read.csv(file.choose()) serum_hc<- subset(all_healthy, Timepoint == "HC" & Sample == "Serum") length(unique(serum_hc$MOSAIC)) # check:36 #===================== # File for patients(comprehensive): called "Mosaic_master_file_from_stata.csv" all_df <- read.csv("/home/pub/Work/MOSAIC/MOSAIC_from_work/MASTER/MOSAIC_2015_MASTER_Aki_stata_20150721/Mosaic_master_file_from_stata.csv" , fileEncoding='latin1') # as there is some weird encoding problems! meta_data_cols = c("mosaic", "gender", "age", "adult", "flustat", "type" , "obesity", "obese2", "height", "height_unit", "weight" , "weight_unit", "visual_est_bmi", "bmi_rating") # check if these columns to select are present in the data meta_data_cols%in%colnames(all_df) all(meta_data_cols%in%colnames(all_df)) metadata_all = all_df[, meta_data_cols] sam = all_df[, grepl("_sam1", colnames(all_df))] # use regex library(stringr) serum_regex = regex(".*_serum[1-3]{1}$", ignore_case = T) npa_regex = regex(".*_npa[1-3]{1}$", ignore_case = T) #========= # sam #========= sam_regex = regex(".*_sam[1-3]{1}$", ignore_case = T) sam_cols_i = str_extract(colnames(all_df), sam_regex) # not boolean sam_cols_b = colnames(all_df)%in%sam_cols_i # boolean sam_cols = colnames(all_df)[colnames(all_df)%in%sam_cols_i] # this contains log columns as well as daysamp_samXX sam_regex_log_days = regex("log|day.*_sam[1-3]{1}$", ignore_case = T, perl =T) sam_cols_to_omit = sam_cols[grepl(sam_regex_log_days, sam_cols)]; sam_cols_to_omit sam_cols_clean = sam_cols[!sam_cols%in%sam_cols_to_omit]; sam_cols_clean length(sam_cols_clean) if( length(sam_cols_clean) == length(sam_cols) - length(sam_cols_to_omit) ){ cat("PASS: clean cols extracted" , "\nNo. of clean cols to extract", length(sam_cols_clean)) } sam_cols_to_extract = c(meta_data_cols, sam_cols_clean) if ( length(sam_cols_to_extract) == length(meta_data_cols) + length(sam_cols_clean) ){ cat("Extracing", length(sam_cols_to_extract), "columns for sam") sam_df = all_df[, sam_cols_to_extract] }else{ cat("FAIL: length mismatch" , "Expeceted to extract:", length(meta_data_cols) + length(sam_cols_clean), "columns" , "Got:", length(sam_cols_to_extract)) } colnames_sam_df = colnames(sam_df); colnames_sam_df #========= # serum #========= serum_cols_i = str_extract(colnames(all_df), serum_regex) table(colnames(all_df)%in%serum_cols_i) serum_cols = colnames(all_df)[colnames(all_df)%in%serum_cols_i] serum_cols_to_extract = c(meta_data_cols, serum_cols) if ( length(serum_cols_to_extract) == length(meta_data_cols) + length(serum_cols) ){ cat("Extracing", length(serum_cols_to_extract), "columns for serum") serum_df = all_df[, serum_cols_to_extract] }else{ cat("FAIL: length mismatch" , "Expeceted to extract:", length(meta_data_cols) + length(serum_cols), "columns" , "Got:", length(serum_cols_to_extract)) } #========= # npa #========= npa_cols_i= str_extract(colnames(all_df), npa_regex) table(colnames(all_df)%in%npa_cols_i) npa_cols = colnames(all_df)[colnames(all_df)%in%npa_cols_i] npa_cols_to_extract = c(meta_data_cols, npa_cols) if ( length(npa_cols_to_extract) == length(meta_data_cols) + length(npa_cols) ){ cat("Extracing", length(npa_cols_to_extract), "columns for NPA") npa_df = all_df[, npa_cols_to_extract] }else{ cat("FAIL: length mismatch" , "Expeceted to extract:", length(meta_data_cols) + length(npa_cols), "columns" , "Got:", length(npa_cols_to_extract)) } ################################# #========= # lf data: sam #========= sam_df_v2 = sam_df sam_df = sam_df[1:10, ] pivot_cols = meta_data_cols expected_rows_sam_lf = nrow(sam_df) * (length(sam_df) - length(pivot_cols)); expected_rows_sam_lf # using regex: sam_lf = sam_df %>% tidyr::pivot_longer(-all_of(pivot_cols), names_to = c("mediator", "sample_type", "timepoint"), names_pattern = "(.*)_(.*)([1-3]{1})", values_to = "value") if ((nrow(sam_lf) == expected_rows_sam_lf) & (sum(table(is.na(sam_lf$mediator))) == expected_rows_sam_lf)) { cat(paste0("PASS: long format data has correct no. of rows and NA in mediator:" , "\nNo. of rows: ", nrow(sam_lf) , "\nNo. of cols: ", ncol(sam_lf))) } else{ cat(paste0("FAIL:long format data has unexpected no. of rows or NAs in mediator" , "\nExpected no. of rows: ", expected_rows_sam_lf , "\nGot: ", nrow(sam_lf) , "\ncheck expected rows calculation!")) quit() }