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