我有一个庞大的数据集,包含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
型
我的困难是不仅要分离名称,还要将某些变量集折叠到各个列下。
1条答案
按热度按时间58wvjzkj1#
Zephryl在评论中的回答是不错的,但它不适用于你在问题中给出的其他例子,比如
college_collaborator_1_First_name
。下面的代码为您给出的示例和问题中的数据集给出了正确的解决方案。在开始第二组之前,它使用lookbehind来查找一个数字,然后是下划线:
字符串