У меня проблема с преобразованием классических входных данных с изменением формы
Мои входные данные:
df <- read.table(textConnection(" Ville POP1999 POP2010 PARC1999 PARC2010
1 Paris 1800000 2200000 150 253
2 Itxassou 1000 1800 0 NA
"))
с результатом в этих data.frame:
Ville POP1999 POP2010 PARC1999 PARC2010
1 Paris 1800000 2200000 150 253
2 Itxassou 1000 1800 0 NA
У меня есть такой тип ввода, и я хочу использовать colsplit (пакет reshape2) с регулярным выражением, чтобы вырезать мой фрейм данных так:
Ville Date Population Parc
1 Paris 1999 1800000 150
2 Paris 2010 2200000 253
3 Itxassou 1999 1000 0
4 Itxassou 2010 1800 NA
Как вы думаете, возможно ли сделать это в одну строку с изменением формы 1 или 2 и функцией colsplit?
Мой идентификатор равен "Ville" + "Date", поэтому я думаю, что сначала трудно срезать с помощью colsplit, а после этого повторно использовать идентификатор результата colum с meld: /
У вас есть идея ответа?
Обновление 1:
Я добавляю некоторые трудности к этой проблеме, представьте, что теперь у нас есть тысячи столбцов, и столбцы смешаны. Я пытаюсь использовать grep и изменить форму, но в настоящее время ничего не получается .. (см. Комментарии к @kohske отличный ответ)
Обновление 2:
@ kohske решит проблему с добавлением этого кода:
cn <- grep("*[0-9]",names(df),value="TRUE")
reshape(df, varying = cn, direction = "long", sep = "")