Преобразовать стандартные данные в широкоформатный формат? - PullRequest
1 голос
/ 13 февраля 2020

У меня есть данные, которые выглядят так: Вроде как стандартный формат данных

Как мне преобразовать их в этот формат в RStudio? Широкоформатный

Извините за картинки, так как я не знаю, как создавать таблицы здесь.

Для каждого столбца есть много других значений. И для каждого значения я хотел бы преобразовать его в столбец. (например, столбцы статуса могут иметь «Разведено», «Вдовец» и т. д. c.)

Ответы [ 2 ]

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

Предположим, вы назвали описанную таблицу как df. Примените следующие операции, чтобы получить желаемый результат.

df <- data.frame(ID = 1:4,Status = c("Single", "Single", "Married","Married"),
                 Gender = c("M", "F", "F","F"),Age_Group =c("2","3","2","2"))


knitr::kable(df)

df$Age_Group=as.character(df$Age_Group)

df1 <- fastDummies::dummy_cols(df)

Удалите столбцы, если сделаны макеты.

df1=df1[,-c(2,3,4)]

View(df1)
0 голосов
/ 13 февраля 2020

Используя созданный примерный набор данных @ Yoge sh, вы можете использовать следующий код для изменения формы данных. Я использовал функцию melt из пакета reshape и функцию spread из пакета tidyr.

df <- data.frame(ID = 1:4,Status = c("Single", "Single", "Married","Married"),
             Gender = c("M", "F", "F","F"),Age_Group =c("2","3","2","2"))
df2 <- reshape::melt(df, id = c("ID"))
df2$new_col <- paste0(df2$variable, "-", df2$value)
df2 <- df2[, !(names(df2) %in% c("variable", "value"))]
df3 <- as.data.frame(table(df2$ID, df2$new_col))
df4 <- tidyr::spread(x, Var2, Freq)
colnames(df4)[1] <- "ID"
df4

Это вывод сгенерированного выше кода -

  ID Age_Group-2 Age_Group-3 Gender-F Gender-M Status-Married Status-Single
1  1           1           0        0        1              0             1
2  2           0           1        1        0              0             1
3  3           1           0        1        0              1             0
4  4           1           0        1        0              1             0

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...