如何进一步融合数据集? [英] How to further melt a dataset?
本文介绍了如何进一步融合数据集?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在处理以下数据:
#Reproducible Example
Bills <- c("93-HCONRES-106", "93-HCONRES-107", "93-HCONRES-108")
Members <- c("00134", "00416;00010;00017;00026", "00416;00503;00513;00568")
data <- data.frame(Bills, Members)
数据看起来像这样:
#Data Structure
Bills Members
1 93-HCONRES-106 00134
2 93-HCONRES-107 00416;00010;00017;00026
3 93-HCONRES-108 00416;00503;00513;00568
我想对数据集进行扩展,以使每个账单与每个成员相对应。因此数据如下所示:
What I would like is for the dataset to extend, such that each bill corresponds with each member. So the data looks like this:
Bills Members
93-HCONRES-106 00134
93-HCONRES-107 00416
93-HCONRES-107 00010
93-HCONRES-107 00017
93-HCONRES-107 00026
93-HCONRES-108 00416
93-HCONRES-108 00503
93-HCONRES-108 00513
93-HCONRES-108 00568
您可以共享的任何代码将不胜感激。
Any code you could share would be greatly appreciated.
非常感谢您提供的所有帮助
Thanks so much for all your help
推荐答案
我们可以从 tidyr
library(dplyr)
library(tidyr)
data %>%
separate_rows(Members)
# Bills Members
#1 93-HCONRES-106 00134
#2 93-HCONRES-107 00416
#3 93-HCONRES-107 00010
#4 93-HCONRES-107 00017
#5 93-HCONRES-107 00026
#6 93-HCONRES-108 00416
#7 93-HCONRES-108 00503
#8 93-HCONRES-108 00513
#9 93-HCONRES-108 00568
或将元素提取到列表
,然后 unstest
library(stringr)
data %>%
mutate(Members = str_extract_all(Members, "[^;]+")) %>%
unnest(c(Members))
或使用 base R
stack(setNames(strsplit(as.character(data$Members), ";"), data$Bills))
这篇关于如何进一步融合数据集?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文