如何重新排列R中的数据

时间:2017-10-21 19:15:23

标签: r transfer

我有一个类似于以下数据的长数据列表:

set.seed(9)
part_number<-sample(1:5,5,replace=TRUE)
Type<-sample( c("A","B","C"),5, replace=TRUE)
rank<-sample(1:20,5,replace=TRUE)
data<-data.frame(cbind(part_number,Type,rank))
data

     part_number Type rank
1           2    A    3
2           1    B    1
3           2    B   18
4           2    C    7
5           3    C   10

I want to rearrange the data in the following way: 

     part_number A  B   C
1                   1
2                3  18  7      
3                      10          

我想我需要使用重塑库。但我不确定。

2 个答案:

答案 0 :(得分:2)

libary(tidyr)
data %>% spread(Type,rank)
#   part_number    A    B    C
# 1           1 <NA>    1 <NA>
# 2           2    3   18    7
# 3           3 <NA> <NA>   10

答案 1 :(得分:1)

您可以执行以下操作:

data <- reshape(data, idvar = "part_number", timevar = "Type", direction = "wide")
data

要完全按照你的要求格式化,我会添加,

library(tidyverse)
library(magrittr)
data %<>%
  arrange(part_number) %>%
  dplyr::select(part_number, A = rank.A, B = rank.B, C = rank.C)

如果您有更多列要重命名,我会使用gsub函数按模式重命名。另外,由于现在行名称很乱,

rownames(data) <- c()

如果这不起作用或者这不是您的想法,请告诉我。