2016-09-25 3 views
-1

Я в ситуации, когда мне нужно найти корреляцию между двумя переменными cor(dataframe$x,dataframe$y), где x, y - это имена столбцов, а dataframe - это dataframe. Один из столбцов в моем кадре данных - это функция индикатора (0 и 1).Выбор определенных элементов в R для cor()

Мне интересно, как я могу сравнить значения x и соответствующие им значения y для двух отдельных групп (0 и 1). Я новичок в R, поэтому я думаю, мне интересно, есть ли встроенная функциональность в функции cor(), или если мне нужно восстановить dataframe/array с помощью x's и y's, чтобы найти корреляции для отдельных групп.

Guess, что также приводит к другому вопросу (который я гугле, это не очень ясна мне еще): в чем разница между использованием вектора, массив и dataframe в R под этими функциями (т.е. cor(), t.test(), и т.д.)?

+0

Вы, вероятно, означаете ' dataframe $ x' и 'dataframe $ y' – Pieter

+0

О, право - опечатка там. Да, да. Кроме этого, знаете ли вы, как я могу решить свою проблему? – wowdavers

ответ

1

Вы можете вычислить корреляцию в подмножестве строк, заданных столбцом индикатора. Чтобы выбрать подмножество, используйте dataframe[logical_index,], где logical_index - вектор булевых (в R называется логическим). Для этого вы должны преобразовать индикаторы в boolean.

logical_index <- as.logical(dataframe$indicator) 
cor(dataframe[logical_index,]$x, dataframe[logical_index,]$y) 
cor(dataframe[!logical_index,]$x, dataframe[!logical_index,]$y) 

векторы, матрицы, массивы, списки и кадры данных все различные примитивных типов Р. Четкого и относительно простого введения в разницы заданных Хедли в расширенном R: http://adv-r.had.co.nz/Data-structures.html

+0

Выполнено - я преобразовал «индикатор» в значения TRUE и FALSE. Просто для подтверждения, код 'cor()', который вы указали, дает корреляцию 'x' и' y' два раза: один раз для ** только ** 'TRUE' и один раз для ** только **' FALSE' значения , – wowdavers

+0

Это правильно. Первый вызов дает корреляцию для строк, где столбец 'indicator' равен' TRUE'. Второй вызов дает корреляцию для строк, где столбец 'indicator' равен' FALSE'. – Pieter

+0

Фантастический - большое спасибо! Однако, когда я выполняю вызовы, я не получаю вывод так подробно, как я обычно получаю (выход которого я добавил в исходный пост). Почему? – wowdavers

Смежные вопросы