我有一个类似于以下数据的长数据列表:
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
我想我需要使用重塑库。但我不确定。
答案 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()
如果这不起作用或者这不是您的想法,请告诉我。