R: Как я могу найти пересечение элементов из двух строк кадра данных?
Я только начинаю с R, и мне интересно, как я могу найти пересечение элементов из двух строк информационного кадра. Я старался
intersect(thing[1,],thing[2,])
но он дал мне полный бессмысленный ответ (что-то, что определенно не находится на пересечении, в то же время опуская то, что было на пересечении).
Как мне подойти к этой проблеме?
1 ответ
Если все столбцы имеют одинаковый тип (например, все числа), сначала преобразуйте в матрицу с помощью as.matrix, затем примените пересечение. Например, если фрейм данных называется z:
zz <- as.matrix(z)
intersect(zz[1,], zz[2,])
Если столбцы имеют разные типы переменных, может потребоваться сначала определить, какие столбцы на самом деле сопоставимы, так как вам не нужно сравнивать переменную уровня с целым числом. Например:
z <- data.frame(AA = c( 1, 1, 3, 4),
BB = c( 1, 5, 3, 1),
CC = c('1', 'a', 'b', 'b'),
DD = c( 1, 2, 3, 4)
z[z[,1] == z[,3],1]
Хотя здесь будет возвращено "1", "1" может иметь совершенно другое значение для переменной уровня и для числовой переменной, поэтому мы не должны сравнивать числовые переменные и переменные уровня, по крайней мере, без тщательного контроля.
Может быть отличное решение для сценария, где фрейм данных имеет несколько различных типов, но ничего не приходит на ум...