我在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"
答案 0 :(得分:1)
# 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