我对R编程和stackoverflow还是很陌生,这是在学校的实验室里进行的,如果我问的问题不正确,请原谅我。
为我提供了包含以下列的数据集:
ID | X_B_Rate | X_D_Rate | Y_B_Rate | Y_D_Rate | Z_B_Rate | Z_D_Rate
如您所见,列本身会重复,挑战在于编写R代码并将列转换为:
ID | x_or_y | B_or_D | Rate
我已经尝试过reshape2的melt()函数,但是我无法为RegExp的工作方式而烦恼
test <- melt(df, id.vars=c('ID'), measure.vars=grep('X$',colnames(df)),
variable.name='x_or_y', value.name='Rate')
我知道代码肯定是错误的...我只得到一个ID列表,我似乎无法理解RegExp如何与melt()函数一起使用,并且我尝试使用Google搜索“ Reshape2melt()” “但是到处都只有很短的文档。
如果有人能告诉我我做错了什么,或者至少将我的正确方向指向了正确的文档,我将不胜感激:(
谢谢!
答案 0 :(得分:1)
这应该做到:
yourdf %>%
gather("id","value",1:ncol(.))
然后,您可以根据需要使用任何方式重命名列。
编辑:使用reshape2
,您可以执行以下操作:
yourdf%>%
mutate(ID=row_number()) %>%
reshape2::melt(id.vars=c("ID"))
由于您的问题没有提供示例数据,因此我以自己的数据为例。