Я пытаюсь настроить tidyr
package и борюсь с проблемой наличия переменной, которая является конкатенацией нескольких переменных. В приведенном ниже минимальном примере я хотел бы разделить переменную v2
на составляющие ее переменные v3
и v4
, а затем изменить их, чтобы получить четыре переменные v1
-v4
.
require(plyr)
require(dplyr)
require(stringr)
require(tidyr)
data <-
data.frame(
v1=c(1,2),
v2=c("v3 cheese; v4 200", "v3 ham; v4 150")) %>%
tbl_df()
Если я разделю v2
на новый temp
, я получу только v3
:
mutate(data,
temp=unlist(sapply(str_split(data$v2, pattern=";"), "[", 1)))
v1 v2 temp
1 1 v3 cheese; v4 200 v3 cheese
2 2 v3 ham; v4 150 v3 ham
Мои проблемы:
- 1) Как разделить и качнуть
v3
Иv4
в качестве имен столбцов, используяtidyr
? - 2) В моих реальных данных я не знаю (или их много) имена переменных, но они имеют структуру «значение var», и я хотел бы использовать некоторое регулярное выражение для их автоматической идентификации и качания, как в 1)
Вдохновился этим ответом SO, но не смог заставить его работать с кодом регулярного выражения для имен переменных.
ОБНОВЛЕНИЕ: Мой вывод будет примерно таким (v2
можно пропустить, поскольку теперь он избыточен с v3
и v4
):
v1 v2 v3 v4
1 1 v3 cheese; v4 200 cheese 200
2 2 v3 ham; v4 150 ham 150