R reshape2 - 将 6 列转换为 2 列
R reshape2 - transform 6 cols into 2 columns
我得到了一个包含这些列的数据集:
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()
函数一起工作,我尝试使用谷歌搜索 "Reshape2 melt()" 但到处都只有一个非常简短的文档。
如果有人能告诉我我做错了什么,或者至少给我指出正确文档的正确方向,我将不胜感激。
应该这样做:
yourdf %>%
gather("id","value",1:ncol(.))
然后您可以按照您希望的方式重命名您的列。
编辑:使用 reshape2
你可以这样做:
yourdf%>%
mutate(ID=row_number()) %>%
reshape2::melt(id.vars=c("ID"))
我用自己的数据来举例说明,因为你的问题没有提供样本数据。
我得到了一个包含这些列的数据集:
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()
函数一起工作,我尝试使用谷歌搜索 "Reshape2 melt()" 但到处都只有一个非常简短的文档。
如果有人能告诉我我做错了什么,或者至少给我指出正确文档的正确方向,我将不胜感激。
应该这样做:
yourdf %>%
gather("id","value",1:ncol(.))
然后您可以按照您希望的方式重命名您的列。
编辑:使用 reshape2
你可以这样做:
yourdf%>%
mutate(ID=row_number()) %>%
reshape2::melt(id.vars=c("ID"))
我用自己的数据来举例说明,因为你的问题没有提供样本数据。