r语言 - 根据前面的标签重新排列特定单元格



>我在R中工作,我的数据如下所示,现在它们是df中的3列数据。 有没有办法通过前面的标签重新排列列,即H,D和A? 到目前为止,我看不到任何错误安排的模式......但我想重新排列它超过 1000 行。

H                   A               D
H":"100@1.68"   A:"100@4.35"    D:"100@3.35"
H":"100@2.33"   D:"100@3.20"    A:"100@2.62"
A":"100@2.25"   D:"100@3.15"    H:"100@2.78"
H":"100@2.80"   D:"100@3.25"    A:"100@2.18"
D":"100@3.05"   A:"100@3.40"    H:"100@2.00"
H":"100@2.30"   A:"100@2.90"    D:"100@2.92"
D":"100@3.05"   H:"100@2.25"    A:"100@2.85"
# example data
df = read.table(text = "
H                   A               D
H:100@1.68   A:100@4.35    D:100@3.35
H:100@2.33   D:100@3.20    A:100@2.62
A:100@2.25   D:100@3.15    H:100@2.78
", header=T, stringsAsFactors=F)
library(tidyverse)
df %>%
gather() %>%                            # reshape data
group_by(key = substr(value,1,1)) %>%   # update column names based on first character
mutate(row_id = row_number()) %>%       # add row id (useful for reshaping again)
spread(key, value) %>%                  # reshape data
select(-row_id)                         # remove column
# # A tibble: 3 x 3
#   A          D          H         
#   <chr>      <chr>      <chr>     
# 1 A:100@2.25 D:100@3.20 H:100@1.68
# 2 A:100@4.35 D:100@3.15 H:100@2.33
# 3 A:100@2.62 D:100@3.35 H:100@2.78

最新更新