如何对r中这些类型的数据进行排序

  • 本文关键字:数据 排序 类型 r dplyr
  • 更新时间 :
  • 英文 :


我有30列,我想对它们进行排序。似乎需要多个软件包,但我努力做到这一点。下面是一个数据示例:

df<-read.table (text=" Id   Name    Class   bc1 M1  G1
23  Smith   A1  13  13  12
19  John    Z1  12  14  12
33  Rose    OG1 14  13  14
66  Javid   MO1 12  14  13
66  Javid   MO2 12  13  14
23  Smith   A11 12  13  12
33  Rose    OG2 14  14  13
19  John    Z11 12  12  12
", header=TRUE)

我想要得到这些数据:

Id  Name    Class1  bc1 M1  G1  Class2  bc1 M1  G1
23  Smith   A1  13  13  12  A11 12  13  12
19  John    Z1  12  14  12  Z11 12  12  12
33  Rose    OG1 14  13  14  OG2 14  14  13
66  Javid   MO1 12  14  13  MO2 12  13  14

逻辑是每个Id都有不同的值,我想为它们生成列。谢谢你的帮助。

我们可以创建一个序列列,然后使用pivot_wider

library(tidyr)
library(dplyr)
library(data.table)
library(stringr)
df %>%
mutate(nm1 = rowid(Id, Name)) %>%
pivot_wider(names_from = nm1, values_from = Class:G1)%>%
select(Id, Name, order(as.integer(str_remove(names(.)[-(1:2)], ".*_"))) + 2)

与产出

# A tibble: 4 x 10
#     Id Name  Class_1 bc1_1  M1_1  G1_1 Class_2 bc1_2  M1_2  G1_2
#  <int> <chr> <chr>   <int> <int> <int> <chr>   <int> <int> <int>
#1    23 Smith A1         13    13    12 A11        12    13    12
#2    19 John  Z1         12    14    12 Z11        12    12    12
#3    33 Rose  OG1        14    13    14 OG2        14    14    13
#4    66 Javid MO1        12    14    13 MO2        12    13    14

最新更新