R пакет психических двух означает в одну переменную после объединения - PullRequest
0 голосов
/ 20 января 2020

Я сейчас анализирую данные для студенческого проекта. В ходе анализа я объединил две переменные в одну с помощью cbind ():

interpas$GA02_01 <- cbind(interpas$LP02_01, interpas$ST02_01)

Две переменные LP02_01 и ST02_01 измеряют одни и те же вопросы, но для разных медиа-форматов. Там нет дублирования между двумя. Структура выглядит так:

LP02_01 ST02_01
1        NA
NA       2
NA       5
4        NA

Так что они просто объединяются. Когда я вычисляю среднее значение с помощью встроенной функции mean () из R, я получаю среднее значение для новой переменной GA02_01.

Но когда я использую функцию среднего значения пакета psych или любую другую функция для описательной статистики (например, описать) из этого пакета, она вычисляет две переменные LP02_01 и ST02_01 по-прежнему раздельно. Вот так:

> describe(interpas$GA02_01)
   vars   n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 151 3.62 1.89      4    3.59 1.48   1   7     6 0.00    -1.24 0.15
X2    2  63 2.70 1.92      2    2.45 1.48   1   7     6 0.85    -0.64 0.24

Кто-нибудь знает решение этой проблемы? К сожалению, мне нужны описательные функции skew и kurtosi из пакета psych для дальнейшего анализа и функция для проверки нормального распределения.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 20 января 2020

Я бы заглянул в Coalesce

, так что вы, вероятно, захотите что-то вроде:

df%>%
mutate(new_var = coalesce(old_var1, old_var2)%>%
select(-c(old_var1,old_var2))

вот документация для функции в dplyr. https://www.rdocumentation.org/packages/dplyr/versions/0.7.8/topics/coalesce

0 голосов
/ 20 января 2020

Вам просто нужно unlist ваш фрейм данных. Однако убедитесь, что вы выбираете нужные столбцы правильным (для вашего случая использования) способом. Например, когда вы используете cbind, вы создаете матрицу. Вы можете просто использовать индексацию, например, df[1:2] (для первого и второго столбцов) или по имени, например, df[,c("LP02_01", "ST02_01")]. Таким образом, вы получите объект фрейма данных. Тогда вы можете просто unlist и describe(), т.е.

psych::describe(unlist(interpas[, c("LP02_01", "ST02_01")]))
#   vars n mean   sd median trimmed  mad min max range skew kurtosis   se
#X1    1 4    3 1.83      3       3 2.22   1   5     4    0    -2.24 0.91
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...