在一个单元格中的多个可分离(连接)值上加入 R 数据框

Posted

技术标签:

【中文标题】在一个单元格中的多个可分离(连接)值上加入 R 数据框【英文标题】:Joining R dataframe on multiple separable (concatenated) values in one cell 【发布时间】:2021-05-22 21:19:32 【问题描述】:

我正在尝试找到一种方法来对两个数据帧进行连接,但不是直接匹配 (test<-inner_join(blood, behavior, by = c("IDy" = "IDx"))) 我希望能够将 '1|3|546' 分成单独的元素并匹配连接(如 '042' %in% '1|2|3|042')。我能想到的唯一方法是在新行(1、2、3、042)上创建 3 个额外的行,每个值都在一个单元格中,但我宁愿将所有值都保存在一个单元格中。我不确定这是否是一个疯狂的想法。

# Creating behavior dataframe
IDx <- c('1|3|546', '1|2|3|983', '1|2|3|042', '952', '853', '061')
diet <- c("veg", "pes", "omni", "omni", "omni", "omni")
exercise <- c("high", "low", "low", "low", "med", "high")
behavior <- data.frame(IDx, diet, exercise)

# Creating blood dataframe
IDy <- c('983', '952', '853', '061', '042', '581', '249', '467', '841', '546')
blood_levels <- c(43543, 465, 4634, 94568, 850, 6840, 5483, 66452, 54371, 1347)
blood <- data.frame(IDy, blood_levels)

【问题讨论】:

【参考方案1】:

我们可以使用tidyr中的separate_rows通过分隔符分割行,然后使用inner_join

library(dplyr)
library(tidyr)
behavior %>%
   separate_rows(IDx) %>% 
   inner_join(blood, by = c("IDx" = "IDy"))

-输出

# A tibble: 6 x 4
#  IDx   diet  exercise blood_levels
#  <chr> <chr> <chr>           <dbl>
#1 546   veg   high             1347
#2 983   pes   low             43543
#3 042   omni  low               850
#4 952   omni  low               465
#5 853   omni  med              4634
#6 061   omni  high            94568

【讨论】:

以上是关于在一个单元格中的多个可分离(连接)值上加入 R 数据框的主要内容,如果未能解决你的问题,请参考以下文章

计算单元格中的字符数 (OpenOffice Writer)

在 R 中的 pheatmap 单元格中显示原始数字

如何将多个单元格中的字符串聚合到一个单元格中?

为啥两个表格视图单元格中的两个集合视图在 Swift 4 中不起作用?

多个tableView单元格中的多个collectionView

如何在可重用的 tableView 单元格中更新 UITextfield 中的文本值,每个单元格中的值不同