У меня есть кадр данных, который выглядит примерно так:
Age A1U_sweet A2F_dip A3U_bbq C1U_sweet C2F_dip C3U_bbq Comments
23 1 2 1 NA NA NA Good
54 NA NA NA 4 1 2 ABCD
43 2 4 7 NA NA NA HiHi
Я пытаюсь реорганизовать его так, как показано ниже, чтобы сделать его более «аккуратным». Есть ли способ сделать это, который также включает столбцы «Возраст» и «Комментарии» в том же стиле, что и для других переменных ниже? Как бы вы предложили их включить - одна идея показана ниже, но я открыт для других предложений. Как мне изменить следующий код, чтобы учесть несколько разных стилей имени столбца?
library(tidyr)
df <- data.frame(id = 1:nrow(df), df)
dfl <- gather(df, key = "key", value = "value", -id)
dfl <- separate(dfl, key, into = c("key", "kind", "type"), sep = c(1, 4))
df2 <- spread(dfl, key, value)
df2
## id kind type A C
## 1 1 Age Age 23 23
## 2 1 1U_ sweet 1 NA
## 3 1 2F_ dip 2 NA
## 4 1 3U_ bbq 1 NA
## 5 1 Com Com Good Good
## 6 2 Age Age 54 54
## 7 2 1U_ sweet NA 4
## 8 2 2F_ dip NA 1
## 9 2 3U_ bbq NA 2
##10 2 Com Com ABCD ABCD
##11 3 Age Age 43 43
##12 3 1U_ sweet 2 NA
##13 3 2F_ dip 4 NA
##14 3 3U_ bbq 7 NA
##15 3 Com Com HiHi HiHi
И как мне изменить следующий код, чтобы вернуть данные в исходное состояние?
df <- gather(df2, key = "key", value = "value", A, B, C)
df <- unite(df, "key", key, kind, type, sep = "")
df <- spread(df, key, value)
Для контекста этот вопрос был вызван комментарием Исты под этим вопросом: -title-names/48716608?noredirect=1#comment84433560_48716608">Объединение столбцов в R на основе соответствия началу названий столбцов
age
иcomments
в ваших данных? Я не понимаю, что ты говоришь. Не могли бы вы уточнить это? - person jazzurro   schedule 10.02.2018age
иsweets
. Пожалуйста, обновите свой пример с ожидаемым результатом - person akrun   schedule 10.02.2018