这是我的数据集
ID <- c(1,1,2,2,3,3)
ID_2<-c("A","A","B","B","C","C")
Type<-c("EM","PA","EM","PA","EM","PA")
INT <- c("R", "I", "S", "S", "R", "R")
ORG <- c("EC", "EC", "KP", "KP", "MM", "MM")
Data_sum<- data.frame(ID, ID_2, Type, INT, ORG)
Data_sum
我希望数据看起来像这样。因此,行是基于";ID";以及";ID_ 2";并展开该列";类型";并用来自";INT";
ID ID_2 EM PA ORG
1 A R I EC
2 B S S KP
3 C R R MM
这是一个tidyverse
解决方案。
library(tidyr)
pivot_wider(
Data_sum,
id_cols = c(ID, ID_2, ORG),
names_from = Type,
values_from = INT
)
## A tibble: 3 x 5
# ID ID_2 ORG EM PA
# <dbl> <chr> <chr> <chr> <chr>
#1 1 A EC R I
#2 2 B KP S S
#3 3 C MM R R
这里有一个data.table
方法
library(data.table)
dcast(setDT(Data_sum), ID + ID_2 + ORG ~ Type, value.var = "INT")
# ID ID_2 ORG EM PA
# 1: 1 A EC R I
# 2: 2 B KP S S
# 3: 3 C MM R R