Я пытаюсь сделать следующее:
- Разбить R-фрейм данных на управляющий и остальной (выборки)
- Сопоставить столбец контрольного и сэмплового фрейма данных (совпадение слов)
- Для каждого совпадения в этом столбце вычитайте значения контрольных выборок в другом столбце
- Печать всех совпадающих и несопоставленных строк в выходном фрейме данных
Я пытался:
# input
My.Data <- structure(list(V1 = structure(1:9, .Label = c("a1", "a2", "a3",
"a4", "a5", "control1", "control2", "control3", "control4"), class = "factor"),
V2 = structure(c(1L, 1L, 2L, 3L, 5L, 1L, 2L, 3L, 4L), .Label = c("otu1",
"otu2", "otu3", "otu4", "otu6"), class = "factor"), V3 = structure(c(4L,
5L, 6L, 9L, 8L, 3L, 1L, 2L, 7L), .Label = c("ee", "tt", "w",
"xx", "xxx", "xy", "yy", "z44", "zz"), class = "factor"),
V4 = c(44L, 52L, 11L, 22L, 91L, 4L, 34L, 33L, 11L)), class = "data.frame", row.names = c(NA,
-9L))
# split groups
control<-My.Data[grep("^control*", My.Data$V1), ]
sample<-My.Data[!grepl("^control*",My.Data$V1),]
# match V2 in control and samples (example match: otu1 with otu1..)
?
# Whenever match found in V2 (multiple match is possible), subtract sample-control values in V4
?
# print all matched (and non-matched) rows in a dataframe
Я хочу получить выходной кадр данных в виде:
a1 otu1 xx 40
a2 otu1 xxx 48
a3 otu2 xy -23
a4 otu3 zz -11
a5 otu6 z44 91
control4 otu4 yy 11
Спасибо.