Мои два фрейма данных выглядят следующим образом:
df1 <- structure(list(species = structure(1:4, .Label = c("a", "b",
"c", "d"), class = "factor"), sample1 = c(1L, 1L, 1L, 1L), sample2 = c(0L,
0L, 1L, 1L)), class = "data.frame", row.names = c(NA, -4L))
df2 <- structure(list(species = structure(c(1L, 5L, 6L, 7L, 2L, 3L,
4L), .Label = c("a", "b", "c", "d", "x", "y", "z"), class = "factor"),
sample1 = c(1L, 1L, 0L, 1L, 0L, 1L, 1L), sample2 = c(1L,
1L, 1L, 0L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA,
-7L))
1/0 указывает на присутствие и отсутствие.
Теперь я хочу сопоставить каждый столбец df1 с соответствующим столбцом в df2 и сохранить сравнение приводит к двум параметрам (для каждого столбца в df1).
TP - Количество ненулевых значений df1 в каждом столбце, сопоставленных с соответствующими ненулевыми значениями df2 и
FP - Количество ненулевые значения df1 в каждом столбце, которые не совпадают с соответствующими ненулевыми значениями df2.
Выходной кадр данных (df3) должен быть:
df3<-structure(list(species = structure(c(1L, 2L, 3L, 4L, 6L, 5L), .Label = c("a",
"b", "c", "d", "FP", "TP"), class = "factor"), sample1 = c(1L,
1L, 1L, 1L, 3L, 1L), sample2 = c(0L, 0L, 1L, 1L, 2L, 0L)), class = "data.frame", row.names = c(NA,
-6L))
Я пытаюсь использовать setdiff для получения различий в df1:
overlap <- for ( i in 1:colnames(df1)){
data.frame(setdiff(df1[,i], df2[,i]) >0)
}
Но очевидно, что это неправильный путь.
Спасибо за вашу помощь!