我试图使用tidyr
包进行定制,并且正在努力解决一个变量是多个变量连接的问题。在下面的最小示例中,我想将变量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 value”,我想使用一些正则表达式来自动识别和摆动它们,如 1)
受到这个SO 答案的启发,但无法使用变量名的正则表达式代码使其工作。
更新:我的输出将类似于(v2
可以跳过,因为它现在与v3
and冗余v4
):
v1 v2 v3 v4
1 1 v3 cheese; v4 200 cheese 200
2 2 v3 ham; v4 150 ham 150