У меня есть фрейм данных с несколькими записями в нескольких ячейках.Существует три вида столбцов: те, которые содержат только 1/0, те, которые содержат 1/0 и некоторые другие записи, и те, которые не содержат 1/0.
Я хочу, чтобы все столбцы, содержащие другое значение (обычно две или более записей), были разбиты на x новых столбцов с именем столбца + значение в ячейке для каждого уникального значения встолбец, и 1/0, как это или нет.Все столбцы с только 1/0 останутся без изменений.
Примечание: Мой исходный фрейм данных больше и содержит много столбцов.Кроме того, содержимое в ячейках может варьироваться в зависимости от фрейма данных, и я хотел бы, чтобы он работал независимо от того, сколько / сколько записей в ячейках.Также обратите внимание, что у меня есть столбцы, которые я не хочу разбивать, либо потому, что они содержат только 1/0 (например, emrY), либо потому, что они содержат другие данные (например, T_CIP).
Фрейм данных:
structure(list(id = 1:10, emrA = c("I219V, T286A", "I219V", "I219V",
"I219V", "I219V", "R164H, I219V", "R164H, I219V", "R164H, I219V",
"R164H, I219V", "R164H, I219V"), gyrA_8 = c("S83L,678E", "D87N",
"S83L,252G", "S83L,678E", "S83L,678E", "S83L,828T", "S83L,828T",
"S83L,828T", "S83L,828T", "S83L,828T"), emrY = c("0", "1", "1",
"1", "1", "1", "1", "1", "1", "1"), T_CIP = c(0.25, 0.12, 0.12,
0.25, 0.25, 0.5, 2, 1, 1, 2)), .Names = c("id", "emrA", "gyrA_8",
"emrY", "T_CIP"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-10L))
Как это выглядит:
id emrA gyrA_8 emrY T_CIP
1 I219V, T286A S83L,678E 0 0.25
2 I219V D87N 1 0.12
3 I219V S83L,252G 1 0.12
4 I219V S83L,678E 1 0.25
5 I219V S83L,678E 1 0.25
6 R164H, I219V S83L,828T 1 0.5
7 R164H, I219V S83L,828T 1 2
8 R164H, I219V S83L,828T 1 1
9 R164H, I219V S83L,828T 1 1
10 R164H, I219V S83L,828T 1 2
Что я хочу получить в итоге:
id emrA_I219V emrA_T286A emrA_R164H gyrA_8_S83L gyrA_8_678E gyrA_8_D87N gyrA_8_252G gyrA_8_828T emrY T_CIP
1 1 1 0 1 1 0 0 0 0 0.25
2 1 0 0 0 0 1 0 0 1 0.12
3 1 0 0 1 0 0 1 0 1 0.12
4 1 0 0 1 1 0 0 0 1 0.25
5 1 0 0 1 1 0 0 0 1 0.25
6 1 0 1 1 0 0 0 1 1 0.5
7 1 0 1 1 0 0 0 1 1 2
8 1 0 1 1 0 0 0 1 1 1
9 1 0 1 1 0 0 0 1 1 1
10 1 0 1 1 0 0 0 1 1 2
Столбец emrY былне разделен, потому что он содержит только 1/0.T_CIP (и другие подобные ему столбцы) не был разделен, поскольку он содержит другие данные.
Есть ли способ сделать это с помощью пакетов tidyverse?
РЕДАКТИРОВАТЬ:
Я не чувствую, что вопрос, помеченный как дубликат, отвечает на мой вопрос - у них нет нескольких столбцов с различным содержанием, а сам вопрос непосредственно касается фиктивных переменных и, кажется, не объясняет, что яЯ пытаюсь сделать здесь.