R:基于复合列名将数据帧从宽格式重塑为长格式 [英] R: reshape dataframe from wide to long format based on compound column names
本文介绍了R:基于复合列名将数据帧从宽格式重塑为长格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据帧,其中包含两组数据(A、B)的观测数据,数据集和观测类型由列名指定:
mydf <- data.frame(meta1=paste0("a",1:2), meta2=paste0("b",1:2),
A_var1 = c(11:12), A_var2 = c("p","r"),
B_var1 = c(21:22), B_var2 = c("x","z"))
我想重塑此数据帧,以便每行只包含一个集合上的观测数据。在这种长格式中,集合和列名应该通过在‘_’处拆分原始列名来给出:
mydf2 <- data.frame(meta1=rep(paste0("a",1:2),2),
meta2=rep(paste0("b",1:2),2),
set=c("A","B","A","B"),
var1 = c(11:12),
var2 = c("a","b","c","d"))
我曾尝试将‘Gather’与‘str_plit’、‘SUB’结合使用,但不幸的是没有成功。是否可以使用潮汐函数来完成此操作?
推荐答案
是,您可以使用tidyverse
!
您离得很近,您需要gather
,然后separate
,然后spread
。
new_df <- mydf %>%
gather(set, vars, 3:6) %>%
separate(set, into = c('set', 'var'), sep = "_") %>%
spread(var, vars)
希望这能有所帮助!
这篇关于R:基于复合列名将数据帧从宽格式重塑为长格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文