Используя созданный примерный набор данных @ 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
Надеюсь, это поможет!