У меня есть некоторые данные об экспрессии белков для 850 белков, и я хотел бы нормализовать эти данные для эталонного белка. Это хороший способ исправить технические ошибки. Я новичок в R и только что решил создать аккуратный набор данных. Но когда я ищу нормализацию, это в основном масштабирование данных. Я не могу найти хороших способов соотношения точки данных в наборе данных. Итак, у меня есть следующее, где type = D или T, pt.num = 1-8, и есть 859 GeneID с 9952 элементами в файле размером 612,9 КБ.
> head(df10g)
GeneID type pt.num value
1 A2M D 1 8876.5
2 ABL1 D 1 2120.8
3 ACP1 D 1 1266.6
4 ACP5 D 1 67797.6
5 ACVRL1 D 1 650.1
6 ACY1 D 1 6264.8
318 IGF2R D 1 6294.8
Я хотел бы нормализовать IGF2R для каждого pt.num.type. Но я не могу понять его семантику. Я хочу такую функцию
Norm.ig2Fr=GeneID.type.pt.num(value)/IG2FR.type.pt.num(value)
Norm.ig2fr=ASM.D.1 (value)/IG2FR.D.1 (value)
Norm.ig2fr=8876.5/6294.8
Желаемый результат будет
GeneID type pt.num value Norm.ig2fr log2Norm.ig2fr
1 A2M D 1 8876.5 1.41 0.49
2 ABL1 D 1 2120.8
3 ACP1 D 1 1266.6
4 ACP5 D 1 67797.6
Я думаю, что могу использовать преобразование mutate или ddply, но мне не хватает чего-то, чтобы исправить знаменатель отношения к тому же значению GeneID, но изменяя pt.num и тип.
df11 <- ddply(df10g, .(pt.num), transform, Norm.ig2b=value/IGF2R)
or
df10.igf2r<- mutate(df10t, .(type, pt.num), Norm.ig2fr=value/IG2FR)
dput(df10g)
structure(list(GeneID = structure(c(1L, 2L, 3L, 4L, 6L, 7L), .Label = c("A2M",
"ABL1", "ACP1", "ACP5", "Activated Protein C", "ACVRL1", "ACY1"),class = "factor"), type = c("D", "D", "D", "D", "D",
"D"), pt.num = c("1", "1", "1", "1", "1", "1"), value = c(8876.5,
2120.8, 1266.6, 67797.6, 650.1, 6264.8)), .Names = c("GeneID",
"type", "pt.num", "value"), row.names = c(NA, 6L), class = "data.frame")
Любые предложения или идеи будут оценены. Спасибо за вашу помощь!