R: Как я могу найти пересечение элементов из двух строк кадра данных? - PullRequest
1 голос
/ 07 марта 2012

Я только начинаю работать с R, и мне интересно, как я могу найти пересечение элементов из двух строк информационного кадра.Я попытался

intersect(thing[1,],thing[2,])

, но это дало мне полный бессмысленный ответ (что-то, что определенно не находится на пересечении, но опускаю то, что было на пересечении).

Как мне приблизитьсяэта проблема?

1 Ответ

3 голосов
/ 07 марта 2012

Если все столбцы одного типа (например, все числа), сначала преобразуйте в матрицу с помощью 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» может иметь совершенно другое значение для переменной уровня и для числовой переменной, поэтому мы не должны сравнивать числовые значения.переменные и переменные уровня, по крайней мере, без тщательного контроля.

Для сценария может быть удобное решение, когда фрейм данных имеет несколько различных типов, но ничего не приходит на ум ...

...