R 如何基于两个ID扩展数据';s并用相应列的响应填充新列

R 如何基于两个ID扩展数据';s并用相应列的响应填充新列,r,spread,dcast,R,Spread,Dcast,这是我的数据集 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&

这是我的数据集

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

下面是一个
数据表
方法

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

下面是一个
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    
library(tidyr)
支点更宽(
数据汇总,
id_cols=c(id,id_2,组织),
name_from=类型,
值_from=INT
)
##一个tibble:3x5
#ID_2组织EM PA
#      
#1欧共体一级
#2 B KP S
#3毫米R

当我在实际数据上使用此代码时,会出现一个错误“聚合函数缺失:默认为长度”。此外,不是用相应的R、I、S等填充“类型”列,而是用数字(0和1)填充。知道为什么会发生这种情况吗?那么你的ID-ID2-ORG组合不是唯一的。。因此,每行有多个EM和/或PA值(有您看到的数字)
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