R语言 使用多组列透视更长

mzsu5hc0  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(114)

我有一个庞大的数据集,包含32个个体的大量变量(参数)。它是一个广泛的数据集,列的范围从例如所有个人的名字,所有个人的姓氏,角色,机构和其他参数。所有变量都以相同的前缀开头,例如college_collaborator,新变量以_开头,然后是一个从1到32的数值,然后是用下划线分隔的各个参数的名称。示例为college_collaborator_1_First_name, college_collaborator_2_First_name, college_collaborator_3_First_name,第二组变量的示例为college_collaborator_1_last_name, college_collaborator_2_last_name, college_collaborator_3_last_name。每个参数有32个数字。
数据集看起来像这样:数据集_1

dataset_1 <- read.table(text=
"ID     cb_1_fn  cb_2_fn cb_3_fn cb_1_ln cb_2_ln cb_3_ln
1      Jill       Pete    Edy     James    Lil    febe
2      Aliya      Edy     Jill    Troy     adam   tom
3      Tom        John    Moss    Pete     Fun    Tom
4      Phill      Sam     Kale    Jack     Dallas lil
5      Tim        David   Sam     Dale     Simmon Fig", header=TRUE)

字符串
使用pivot_longer整理一个大的列集,同时使用具有类似前缀的变量名(如上所述)将它们折叠成较小的集合,最好的方法是什么?例如,所有的名字都在同一列中,姓氏在同一列中,但不同,等等。输出数据集将如下所示:

Status      fn          ln

cb_1       Jill        James
cb_1       Aliya       Troy 
cb_1       Tom         Pete 
cb_1       Phill       Jack
cb_1       Tim         Dale
cb_2       Pete        Lil
cb_2       Edy         Adam
cb_2       John        Son
cb_2       Sam         Dallas
cb_2       David       Simmon
cb_3       Edy         Febe
cb_3       Jill        tom
cb_3       Moss        Tom
cb_3       Kale        Lil
cb_3       Sam         Fig


我的困难是不仅要分离名称,还要将某些变量集折叠到各个列下。

58wvjzkj

58wvjzkj1#

Zephryl在评论中的回答是不错的,但它不适用于你在问题中给出的其他例子,比如college_collaborator_1_First_name
下面的代码为您给出的示例和问题中的数据集给出了正确的解决方案。在开始第二组之前,它使用lookbehind来查找一个数字,然后是下划线:

pivot_longer(dataset_1, -ID, names_pattern = "(.+)_((?<=\\d_).+)", names_to = c("Status", ".value"))

字符串

相关问题