Как расширить данные из большого опроса в R - PullRequest
0 голосов
/ 07 февраля 2020

У меня были данные опроса с этими переменными:

df <- data.frame(Sex = c("Male","Female","Male","Female","Male"),
                 Age = c(19,20,34,56,45),
                 ExpansionFactor = c(123456789,31256789,127896543,251436978,536294817))

Я хочу создать отчет, но сначала мне нужно расширить опрос данных, не разбивая мой P C.

Мой желаемый набор данных:

Sex       Age
Male      19
.         .
.         .
.         .
Female    20
.         .
.         .
.         .
Male      34
.         .
.         .
.         . 
Female    56
.         .
.         .
.         .
Male      45
.         .
.         .
.         .
Male      45

dim(df)
[1] 1070341916 2 

Есть предложения?

Большое спасибо за помощь.

1 Ответ

1 голос
/ 07 февраля 2020

Я действительно не понимаю, зачем вам такие данные. Вы можете идеально создать отчет, используя взвешенные сводки данных, следующим образом.

data

library(ggplot2)
library(dplyr)

set.seed(123)

df <- data.frame(
  sex = sample(c("Male", "Female"), size = 100, replace = TRUE),
  age = rnorm(100, mean = 25, sd = 10),
  expansion.factor = sample(12:40, size = 100, replace = TRUE)
)

Вы можете создавать сводки

df %>%
    group_by(sex) %>%
    summarise(
        count = sum(expansion.factor),
        mean_age = (sum(age * expansion.factor))/sum(expansion.factor),
        # There are packages with functions like this one
        mean_age2 = weighted.mean(age, expansion.factor)
    )

# A tibble: 2 x 4
  sex    count mean_age mean_age2
  <fct>  <int>    <dbl>     <dbl>
1 Female  1050     28.0      28.0
2 Male    1611     24.3      24.3

Визуализации с использованием ggplot2

df %>%
    ggplot(aes(x = age, weight = expansion.factor)) +
    geom_histogram(bins = 20)

enter image description here

...