Как сгенерировать сводную статистику (аналогично psych :: descriptionBy) для подгрупп в подгруппах большего набора данных? - PullRequest
0 голосов
/ 19 января 2020

Новое для R (для биостатов) здесь! У меня огромный набор данных, и я использую describe() и describeBy() из пакета психологии. Но я также пытаюсь найти способ сделать базовую c статистику для подгрупп в подгруппах.

Например, мой набор данных о членстве в клубе, в котором есть китайцы и индийцы. Другие переменные включают пол, возраст, рост, вес, ИМТ и так далее.

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

Я попытался переопределить с помощью функции subset(), а затем снова запустить describeBy, например,

chinese <- subset(maindata, chinese=1)
describeBy(chinese, male=1)

Но это не сработало, и результаты были такими же, как у describeBy(maindata,chinese=1), а не у китайского мужского подмножества.

Я надеюсь, что имеет смысл.

Единственное другое решение, которое я могу придумать, - это разбить мой основной набор данных на более мелкие в MS Excel и повторно загрузить каждый из них отдельно (например, Chinese.xls, Indian.xls) или создать новая переменная с определением сочетания этнической принадлежности и пола, например, Chinesemale = 1, Chinesefemale = 2, Indianmale = 3, Indianfemale = 4.

Мне более или менее потребуется проанализировать по этим подгруппам подгрупп для t -проверяет d Фишер точен, поэтому любые хорошие рекомендации по пакетам, которые помогут решить эти проблемы, будут оценены!

1 Ответ

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

Пример данных

df1 <- data.frame(subject = c(1, 2, 3, 4, 5),
                  chinese = c(1, 1, 1, 0, 0),
                  male = c(1, 0, 1, 0, 1),
                  value = c(45, 23, 84, 11, 12))

Два изменения синтаксиса в вашем коде:

  • двойной знак равенства в subset(). Вы хотите сохранить строки, где chinese равно 1. Вы бы использовали один знак равенства, если бы вы присваивали значение 1 параметру с именем chinese.
  • В describeBy(), * Параметр 1015 * предоставляет различные сводные статистические данные для каждой категории в этом столбце (как показано ниже). Вы не можете использовать его для подмножества для мужчины = 1.
chinese <- subset(df1, chinese == 1)

describeBy(chinese, group = "male")

 Descriptive statistics by group 
group: 0
        vars n mean sd median trimmed mad min max range skew kurtosis se
subject    1 1    2 NA      2       2   0   2   2     0   NA       NA NA
chinese    2 1    1 NA      1       1   0   1   1     0   NA       NA NA
male       3 1    0 NA      0       0   0   0   0     0   NA       NA NA
value      4 1   23 NA     23      23   0  23  23     0   NA       NA NA
------------------------------------------------------------------------------------------------------------------------------------- 
group: 1
        vars n mean    sd median trimmed   mad min max range skew kurtosis   se
subject    1 2  2.0  1.41    2.0     2.0  1.48   1   3     2    0    -2.75  1.0
chinese    2 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
male       3 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
value      4 2 64.5 27.58   64.5    64.5 28.91  45  84    39    0    -2.75 19.5

Если вы хотите видеть только сводную статистику по мужчинам в выборке, вы можете добавить & male == 1 к subset():

chinese <- subset(df1, chinese == 1 & male == 1)

describeBy(chinese)

        vars n mean    sd median trimmed   mad min max range skew kurtosis   se
subject    1 2  2.0  1.41    2.0     2.0  1.48   1   3     2    0    -2.75  1.0
chinese    2 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
male       3 2  1.0  0.00    1.0     1.0  0.00   1   1     0  NaN      NaN  0.0
value      4 2 64.5 27.58   64.5    64.5 28.91  45  84    39    0    -2.75 19.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...