Statistical summarizing data

r
data_wrangling
data_science
#1

I have a big data frame for omics data. Samples are named as Genotype_Time_Replicate (e.g. AOX_1h_4). Each sample has 4 replicates for each time point.

# Sample data frame given

df <- structure(list(AGI = c("ATCG01240", "ATCG01310", "ATMG00070"), aox2_0h__1 = c(15.79105291, 14.82652303, 14.70630068), aox2_0h__2 = c(16.06494674, 14.50610036, 14.52189807), aox2_0h__3 = c(14.64596287, 14.73266459, 13.07143141), aox2_0h__4 = c(15.71713641, 15.15430026, 16.32190068 ), aox2_12h__1 = c(14.99030606, 15.08046949, 15.8317372), aox2_12h__2 = c(15.15569857, 14.98996474, 14.64862254), aox2_12h__3 = c(15.12144791, 14.90111092, 14.59618842), aox2_12h__4 = c(14.25648197, 15.09832061, 14.64442686), aox2_24h__1 = c(15.23997241, 14.80968391, 14.22573239 ), aox2_24h__2 = c(15.57551513, 14.94861669, 15.18808897), aox2_24h__3 = c(15.04928714, 14.83758685, 13.06948037), aox2_24h__4 = c(14.79035385, 14.93873234, 14.70402827), aox5_0h__1 = c(15.8245918, 14.9351844, 14.67678306), aox5_0h__2 = c(15.75108628, 14.85867002, 14.45704948 ), aox5_0h__3 = c(14.36545859, 14.79296855, 14.82177912), aox5_0h__4 = c(14.80626019, 13.43330964, 16.33482718), aox5_12h__1 = c(14.66327372, 15.22571466, 16.17761867), aox5_12h__2 = c(14.58089039, 14.98545497, 14.4331578), aox5_12h__3 = c(14.58091828, 14.86139511, 15.83898617 ), aox5_12h__4 = c(14.48097297, 15.1420725, 13.39369381), aox5_24h__1 = c(15.41855602, 14.9890092, 13.92629626), aox5_24h__2 = c(15.78386057, 15.19372889, 14.63254456), aox5_24h__3 = c(15.55321382, 14.82013321, 15.74324956), aox5_24h__4 = c(14.53085803, 15.12196994, 14.81028556 ), WT_0h__1 = c(14.0535031, 12.45484834, 14.89102226), WT_0h__2 = c(13.64720361, 15.07144643, 14.99836235), WT_0h__3 = c(14.28295759, 13.75283646, 14.98220861), WT_0h__4 = c(14.79637443, 15.1108037, 15.21711524 ), WT_12h__1 = c(15.05711898, 13.33689777, 14.81064042), WT_12h__2 = c(14.83846779, 13.62497318, 14.76356308), WT_12h__3 = c(14.77215863, 14.72814995, 13.0835214), WT_12h__4 = c(14.70685445, 14.98527337, 16.12727292), WT_24h__1 = c(15.43813077, 14.56918572, 14.92146565 ), WT_24h__2 = c(16.05986898, 14.70583866, 15.64566505), WT_24h__3 = c(14.87721853, 13.22461859, 16.34119942), WT_24h__4 = c(14.92822133, 14.74382383, 12.79146694)), class = "data.frame", row.names = c(NA, -3L))

I have a big data frame for omics data. Samples are named as Genotype_Time_Replicate (e.g. AOX_1h_4). Each sample has 4 replicates for each time point.

I have to summarize the data for each genes (i.e. “ATCG01240”, “ATCG01310”, “ATMG00070”) for time point; Mean of 4 replicates, Standard error and do multiple comparisons for each gene, each time point (Posthoc 2way ANOVA; i.e. WT-aox2, WT-aox5, aox2-aox5).

As my working df has many genes (AGI) I want to write a loop for each genes to calculate those values

Then create a table like this picture https://ibb.co/RNmWk91

Later I will use this to plot bar graphs

this is what I have done so far,

We’re going to transpose the data frame, so the gene names need to be rownames, so that they become columnn names

rownames(df) <- df$AGI
df$AGI <- NULL

rownames(df) <- df$AGI_SYM
df$AGI_SYM <- NULL

Transpose the data frame

df <- as.data.frame(t(df))

Turn the samples (rownames) into a column to use as IDs for melting

df$sampleID <- rownames(df)

Melt the data into long format

library(reshape2)
df.m <- melt(df, "sampleID")

Make a new variable “sample” to group the replicates by

df.m$Genotype <- gsub("_.*", "" ,df.m$sampleID)

df.m$Time <- sub("^[^_]*_([^_]*).*", "\\1",df.m$sampleID)

Fit the two-way factorial model.

df.m$var1 <- as.character(df.m$variable)
agiList = c(df.m$var1)
agiList = unique(agiList)
length(agiList)

fit <- lm(value ~ Genotype + Time + Genotype:Time, df.mi)

Look at the model goodness of fit.

plot(fit)
shapiro.test(residuals(fit))

Perform an analysis of variance.

Anova(fit)

Look at interaction effects via least squares means.

lsmip(fit, Genotype ~ Time)

Look at Genotypes averaged over levels of Time.

lsmeans(fit, pairwise ~ Genotype)[[2]]

Compare sliced least squares means using the Tukey method.

fit.tukey <- lsmeans(fit, pairwise ~ Genotype | Time)[[2]]