【发布时间】:2018-09-28 17:34:15
【问题描述】:
这确实是这个问题的重复 r-split-string-using-tidyrseparate,但我不能将 MWE 用于我的目的,因为我不知道如何调整正则表达式。 我基本上想要同样的东西,但在最后一个下划线之后拆分变量。
原因:我的数据中某些列针对相同的因子/类型多次显示。我想我可以将数据融化在类型字符串之前将值变量分开,然后将其再次展开为具有较少列的宽格式。我的问题是我的变量名有几个不同的下划线,我想学习如何在我预先添加的最后一个下划线之后进行分隔。
MWE
library(tidyr)
library(data.table)
dt<-data.table(Name=c("A","B","C"),Var_1_EVU=c(2,NA,NA),Var_1_BdS=c(NA,3,4),Var_2_BdS=c(NA,3,4))
dt.long<-melt(dt, id.vars=c("Name"))
dt.long<-separate(dt.long,variable, c("test","type"), sep='/[^_]*$/')
dt.wide<-spread(dt.long,key=Name,value=value)
我想要类似的东西
Name type Var1 Var2
1: A BdS NA NA
2: A EVU 2 NA
3: B BdS 3 3
4: B EVU NA NA
5: C BdS 4 4
6: C EVU NA NA
【问题讨论】:
-
现在,我使用“愚蠢”的解决方案,并使用“___”将类型添加到我的变量中,我确信它在我的 data.names 中不存在。仍然渴望更好地理解正则表达式......
标签: r data.table tidyr tidyverse melt