2017-10-21 45 views
0

重新排列數據我有類似於下面一個很長的數據列表:如何R中

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   

我想我需要使用重塑庫。但我不確定。

回答

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() 

讓我知道如果這不起作用或這不是你想到的。

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