#r #dataframe #data-conversion
Вопрос:
У меня есть фрейм данных:
участники
ответы
participants answers
A alpha
A beta
A gamma
B beta
C beta
C gamma
Столбец «ответы» содержит гораздо больше, чем просто этот небольшой набор.
как мне превратить его в двоичные функции, такие как следующие:
participant answers value
A alpha 1
A beta 1
A gamma 1
B alpha 0
B beta 1
B gamma 0
C alpha 0
C beta 1
C gamma 1
Я предполагаю, что я тоже должен получить уровни «ответов» и «участников»?
Но я не уверен, как это сделать дальше. Спасибо!
Ответ №1:
В базе R вы могли бы сделать:
data.frame(table(df1))
participants answers Freq
1 A alpha 1
2 B alpha 0
3 C alpha 0
4 A beta 1
5 B beta 1
6 C beta 1
7 A gamma 1
8 B gamma 0
9 C gamma 1
Все вышеперечисленное заказывается не так, как ваш стол. Чтобы сделать это, вы могли бы сделать:
with(a<-data.frame(table(df1)), a[order(participants),])
participants answers Freq
1 A alpha 1
4 A beta 1
7 A gamma 1
2 B alpha 0
5 B beta 1
8 B gamma 0
3 C alpha 0
6 C beta 1
9 C gamma 1
Комментарии:
1. Спасибо! это очень полезно!
Ответ №2:
Если исходные данные «df1», используйте complete
после создания столбца 1s
library(tidyr)
library(dplyr)
df1 %>%
mutate(value = 1) %>%
complete(participants, answers, fill = list(value = 0))
-выход
# A tibble: 9 × 3
participants answers value
<chr> <chr> <dbl>
1 A alpha 1
2 A beta 1
3 A gamma 1
4 B alpha 0
5 B beta 1
6 B gamma 0
7 C alpha 0
8 C beta 1
9 C gamma 1
данные
df1 <- structure(list(participants = c("A", "A", "A", "B", "C", "C"),
answers = c("alpha", "beta", "gamma", "beta", "beta", "gamma"
)), class = "data.frame", row.names = c(NA, -6L))
Комментарии:
1. Спасибо! это очень полезно! Я никогда не знал, что существует «полная» функция!