如何解决如何根据两个 ID 传播数据并使用来自相应列的响应填充新列
这是我的数据集
ID <- c(1,1,2,3,3)
ID_2<-c("A","A","B","C","C")
Type<-c("EM","PA","EM","PA")
INT <- c("R","I","S","R","R")
ORG <- c("EC","EC","KP","MM","MM")
Data_sum<- data.frame(ID,ID_2,Type,INT,ORG)
Data_sum
我希望数据看起来像这样。因此,根据“ID”和“ID_2”压缩行并将“Type”列扩展到各个列中,并使用“INT”中的信息填充响应
ID ID_2 EM PA ORG
1 A R I EC
2 B S S KP
3 C R R MM
解决方法
这是一个 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
,
这是一个 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。