Dataset

我的模拟数据如下所示:

combo <- structure(list(x1 = c(-0.184530460239927, 2.58876410608302, -0.376411897125282, 
-0.918020987034264, 0.267794817079365, 0.510331712403224, -0.0405173200334374, 
-0.138325588779885, 0.238838548324343, -0.878919653298651, 1.07733581268113, 
0.626064563540553, -1.89103128062022, 0.753938255887397, 0.100128777819584, 
0.988056031450007, -1.20492449398259, -0.435112080263483, -0.458684951607226, 
-1.09119839510576, -0.727138654781203, 0.502188856207333, -1.20147250343467, 
1.17932480876155, -0.425692938732958, 1.02236820748, 0.182053835725136, 
0.380227031433806, -0.270517738476701, -0.16272617439478, 0.220593768669037, 
-0.879461950243353, -0.0679190290036845, 1.1465390380024, 0.985536359381242, 
1.30651252236453, 0.416544302978179, -1.38776959348133, 0.26987007672326, 
-0.460563840153545, 1.26860780466628, -0.0822834394483887, -0.857094965973551, 
1.55353442853147, -0.362899956015105, -0.411375625012731, -0.774646267609922, 
-1.785780738652, 0.138298869848299, -0.830007579895058), x2 = c(10.1649997431391, 
13.7753955031784, 9.14611285885852, 8.89500487630507, 11.0792634435256, 
9.40604769694862, 10.9377081086486, 10.3149083885551, 11.4433718412604, 
8.01451483884253, 10.99588355029, 11.43348692627, 8.46187682949792, 
10.2754622062573, 9.72557919495809, 12.5346844833676, 8.72464111735834, 
9.57577516193854, 8.75255475821647, 9.72989475512324, 8.84014340654749, 
11.3804494571042, 7.66077694737602, 11.5186005504865, 9.08940573637054, 
10.8650309543967, 9.61420727102614, 10.927982330081, 9.29822635541754, 
7.76242176319227, 10.7176609762039, 7.83309960333225, 11.375953933858, 
10.5394984580639, 11.188721640198, 12.2932137170417, 11.4266622202742, 
8.78385129373517, 9.63834216468245, 8.65398006594213, 9.73423323110773, 
9.90806217362202, 8.2404184732306, 12.120678223943, 9.32402321768776, 
10.0725587879694, 7.6897109556945, 6.74738232297318, 9.46663373526324, 
9.33169452437223), y1 = c(0.531152563992138, 0.757703597905396, 
-0.791655222372092, -0.302099679513038, 0.671307589662749, 2.12637384156016, 
-0.909796697236723, -1.12913854196627, 1.67269183809139, -0.434990260871762, 
-0.0700467088361849, 0.542668245540057, 0.374830971405129, -1.63773988575198, 
-2.14682334438542, 0.901301020986636, -0.511720906474068, -1.05708841652644, 
-0.272051821060645, -0.79674724927485, -1.5268191640679, -0.907794043098101, 
-0.680495891271473, -0.35552898088709, -0.680683696561238, -0.844283268256992, 
1.27768418531443, -0.961233223427325, -0.671858202047372, -0.225776242419413, 
-0.686226261720162, 1.14668780673855, -0.579007489205267, 1.48425373519236, 
0.428834567252612, -0.211941122441431, -0.512591114561531, -0.0958428297906739, 
1.68860873380911, -0.751395710328223, 1.68278553230514, 0.726087302326806, 
-1.08262236469318, 0.3445461894278, 0.826204921157919, -0.635306319455706, 
-1.82487370480718, -2.11194816404115, 0.714777331685519, -0.345433989913914
), y2 = c(10.6220278853899, 11.6063941600105, 9.88059276478581, 
8.14957601722892, 9.16367249161337, 12.762654818962, 9.00183693282061, 
9.55789660927653, 12.9609244725328, 8.90467635039521, 10.8991427528596, 
9.89206203043643, 9.41991979079818, 7.84784105454833, 8.91365647664849, 
11.3667187570646, 9.40006788407869, 9.98750951320975, 9.00951922619663, 
9.97523890006792, 8.27153592598831, 11.0884143412798, 7.94368844719581, 
10.9469372108228, 8.15593832993733, 9.84078648878971, 11.8451838496249, 
10.8083866882212, 9.61132252103889, 11.1923799807399, 9.10045982731272, 
12.0544568795267, 9.24683481504971, 14.8962611606193, 10.881540894629, 
10.1335621049274, 9.016866497424, 11.2527950167179, 11.8814160661131, 
9.22010868094334, 12.9542930603357, 10.0271771753269, 7.95131787733545, 
9.31692314229138, 11.5295911568582, 8.30646740293857, 8.389129594333, 
7.35608073778492, 11.979325721996, 10.2744608966922), z = c(-0.206932655889915, 
1.59055947315421, 0.569858682145818, -0.39269341805629, 0.0560523995691307, 
-1.35745817399495, 0.757817217783636, 1.2363198027176, -0.705515328708522, 
0.0100215308812615, 1.1496786488628, -0.0189650703302578, -1.0373398254117, 
2.53958513880197, 2.4495884905998, 0.112672166475035, -0.646251528605393, 
0.727127843912292, -0.351583194283642, -0.181459517930261, 1.02924872657184, 
1.31035563724453, -0.337780896477732, 1.1791886765987, 0.330814927636109, 
1.73920234956884, -0.809834547447509, 0.472332306869409, 0.134382367942977, 
0.705445383659287, 0.845104590511669, -2.28815412147097, -0.331179738228726, 
-0.291691270546117, -0.104170550476615, 2.12138490798859, -0.140027608407499, 
-1.03938688051102, -0.846736197331773, -0.197364615019016, -0.420498039989205, 
-1.06172053607786, -0.511495900155817, 2.07372602503043, -1.25039171703876, 
-0.00379074839623933, 0.545098097507594, -0.744687068246333, 
-0.252078776784803, -0.75556398293816)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -50L))

Problem

在表达我的问题或考虑如何找到它时遇到了困难,所以我在这里直接提供了我正在寻找的例子.如果你判断数据,看起来是这样的:

# A tibble: 50 × 5
       x1    x2      y1    y2       z
    <dbl> <dbl>   <dbl> <dbl>   <dbl>
 1  0.220  9.08 -0.763  10.3   0.596 
 2  0.712 11.5   1.79   10.2  -0.836 
 3  1.26  12.3   0.0956  9.86  0.672 
 4 -1.27   7.62  1.61   10.7  -2.16  
 5  0.285 10.7  -0.0596 10.5  -0.357 
 6  0.303 11.1   0.613  10.9  -0.113 
 7 -0.618  7.90  1.56   10.1  -1.97  
 8  2.24  10.9  -0.0412  8.38  2.22  
 9  1.27  10.2   0.290   8.72  1.05  
10  0.230 10.2   0.392  10.5   0.0289
# ℹ 40 more rows
# ℹ Use `print(n = ...)` to see more rows

您可以清楚地看到,这里有标有"1"和"2"的变量.我想要一个新的列,它通过在此处旋转关联的列来指定组1和组2.所以x1y1属于组1,x2y2属于组2.我已经知道如何使用pivot_longer来做类似的事情,但我正在努力弄清楚如何在创建新的标签列的同时将这些变量组合在一起.我想要的目标数据应该如下所示,其中xx1x2的简单组合,yy1y2的组合,而group是每个人所属的组的标签:

  group         x       y       z
   <chr>     <dbl>   <dbl>   <dbl>
 1 Group 1 -3.51    0.181  -0.0610
 2 Group 2  1.63    1.35    0.405 
 3 Group 1  0.271  -0.167  -0.0578
 4 Group 2 -0.776   0.580   0.0599
 5 Group 1 -1.48   -0.0631  0.966 
 6 Group 2  0.757  -2.10    2.07  
 7 Group 1 -1.37    0.462   0.882 
 8 Group 2  0.596   0.0123  0.156 
 9 Group 1 -0.494  -0.824  -1.18  
10 Group 2  0.783  -2.28   -1.40  
11 Group 1 -0.0388 -0.209   0.868 
12 Group 2 -0.255   0.121   1.07  
13 Group 1 -0.758   0.242  -0.665 
14 Group 2 -0.966   1.66    0.374 
15 Group 1 -0.595  -1.17   -0.612 
16 Group 2  1.12   -0.205  -0.484 
17 Group 1 -0.468  -0.404  -0.420 
18 Group 2 -0.361   0.257   1.89  
19 Group 1  0.165   0.989   1.50  
20 Group 2  0.681  -0.304   0.154

推荐答案

我相信你需要names_patternnames_to中的".value"的组合.从文档中:

".value"表示列名的相应组成部分,该列名定义包含单元格值的输出列的名称.

library(tidyverse)

combo |> 
  pivot_longer(-z, names_to = c(".value", "Group"), names_pattern = "([a-z])(\\d)") |> 
  relocate(-z)

# A tibble: 100 × 4
   Group      x      y       z
   <chr>  <dbl>  <dbl>   <dbl>
 1 1     -0.185  0.531 -0.207 
 2 2     10.2   10.6   -0.207 
 3 1      2.59   0.758  1.59  
 4 2     13.8   11.6    1.59  
 5 1     -0.376 -0.792  0.570 
 6 2      9.15   9.88   0.570 
 7 1     -0.918 -0.302 -0.393 
 8 2      8.90   8.15  -0.393 
 9 1      0.268  0.671  0.0561
10 2     11.1    9.16   0.0561
# ℹ 90 more rows

R相关问答推荐

如何正确使用' programme::programme_bar$Message()'?

收件箱摘要表布局在第一列上显示子类别

pivot_longer:names_to和names_pattern

Select 与特定列中最大值对应的数据帧行

R形式的一维数字线/箱形图样式图表

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

使用gggrassure减少地块之间的空间

使用R中相同值创建分组观测指标

如何从当前行上方找到符合特定条件的最接近值?

如何根据R中其他列的值有条件地从列中提取数据?

提取具有连续零值的行,如果它们前面有R中的有效值

条形图和在Ploly中悬停的问题

如何使用列表中多个列表中的第一条记录创建数据框

在多页PDF中以特定布局排列的绘图列表不起作用

计算直线上点到参考点的总距离

根据纬度和距离连接两个数据集

提高圣彼得堡模拟的速度

将文本批注减少到gglot的y轴上的单个值

计算来自单独分组的分幅的值的百分位数