首页 > 解决方案 > 按另一个向量中的值排列数据框的行

问题描述

作为序言,我已经阅读了一些帖子,它们通过另一个向量中的值对数据帧的行进行排序,但这并不是我所追求的。我的数据包含患者 ID 和该行中该患者的数据:

           ID Group    L_HCH    R_HCH    L_HCB    R_HCB    L_HCT    R_HCT L_HC_Total R_HC_Total
121    GP_M01   PAT 0.120000 0.110000 0.040000 0.040000 0.040000 0.040000   0.200000   0.190000
122    GP_M02   PAT 0.110000 0.120000 0.060000 0.060000 0.020000 0.010000   0.190000   0.190000
123    GP_M03   PAT 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000   0.000000   0.000000
124    GP_M05   PAT 0.117340 0.125620 0.050664 0.045523 0.020289 0.012440   0.188293   0.183583
125    GP_M08   PAT 0.114000 0.119000 0.049000 0.065000 0.027000 0.011000   0.190000   0.195000
126  GSTTC_01   PAT 0.151000 0.140000 0.049000 0.058000 0.042000 0.033000   0.242000   0.231000
127  GSTTC_11   PAT 0.130000 0.130000 0.080000 0.070000 0.030000 0.040000   0.240000   0.240000

等等。有些行在错误的位置。我有另一个以已知良好顺序列出的仅ID 列表:

> PT_IDs
[1] "CON_L01"   "CON_L03"   "CON_L04"   "CON_L05"   "CON_L07"   "CON_L10"   "CON_L14"   "CON_L16"   "CON_L17"   "CON_L18"  
 [11] "CON_L19"   "CON_L23"   "CON_L25"   "CON_L26"   "CON_L27"   "CON_L29"   "CON_L30"   "CON_L31"   "CON_L35"   "CON_L36" 

等等

我想,我可以将主数据帧写入 a csv,手动重新排列行,然后将其读回,但我想知道最好的方法是按列重新排列数据帧的行,ID以便它们与列表中的等效 ID 的顺序相同PT_IDsPT_IDs列表中的所有值也都在ID列中,所以那里没有有趣的事情。

感谢您的任何帮助!

标签: rdataframe

解决方案


在对文档进行了更彻底的搜索之后R,我发现了这个match()函数,它似乎具有我想要的功能([match][1])——对于遇到这个问题的任何其他人,解决方案归结为:

df_arranged <- patient_df[match(PT_IDs, patient_df$ID), ]

Match 只返回给定元素的位置,以便用于索引正确的行。希望我不只是添加一堆重复的问题![1]:https ://www.rdocumentation.org/packages/base/versions/3.6.2/topics/match


推荐阅读