将标签分配给不同的组分配方案

Posted

技术标签:

【中文标题】将标签分配给不同的组分配方案【英文标题】:Assigning labels to different group assignment scenarios 【发布时间】:2022-01-24 06:11:26 【问题描述】:

我有一个data.frameids 分配给groups。在最简单的情况下,每个id 都被分配给不同的group

df1 <- data.frame(group = c("a1","a2"),
                  id = c("i1","i2"),
                  stringsAsFactors = F)

在第二种情况下,所有ids 都分配给一个group

df2 <- data.frame(group = c("a1","a1"),
                  id = c("i1","i2"),
                  stringsAsFactors = F)

在第三种情况下,idgroup 的分配不明确:

df3 <- data.frame(group = c("a1","a2","a2"),
                  id = c("i1","i1","i2"),
                  stringsAsFactors = F)

根据上述情况,我正在寻找一个函数,该函数将返回标签 "scenario1"/"scenario2"/"scenario3",给定这样的 data.frameidgroup 列。

换句话说,此函数将返回"scenario1" 用于df1"scenario2" 用于df2"scenario3" 用于df3

显然这可以使用if 语句来完成,但我希望使用dplyr/tidyversedata.table 可以更快地完成。

【问题讨论】:

【参考方案1】:

这是一个检查不同条件的函数。

library(dplyr)

return_scenario <- function(df) 
  tmp <- df %>% distinct(group, id)
  case_when(
    n_distinct(tmp$group) == 1 ~ 'scenario 2',
    n_distinct(tmp$id) == nrow(tmp) ~ 'scenario 1', 
    TRUE ~ 'scenario 3') 


return_scenario(df1)  
#[1] "scenario 1"  
return_scenario(df2) 
#[1] "scenario 2"   
return_scenario(df3)  
#[1] "scenario 3"

如果需要,也可以将其转换为基础 R/data.table 及其等效功能。

【讨论】:

以上是关于将标签分配给不同的组分配方案的主要内容,如果未能解决你的问题,请参考以下文章

在将图像分配给 img 标签之前使用 javascript 调整图像大小

用于更新分配给资源的标签的 Azure API

将 HTML5 视频标签分配给 webGL 纹理时出现 CORS/跨域安全异常

c# 将从单个文本框中获取的多个值分配给标签

如何将 viewController 中的数据分配给 tableViewCell 标签?

以编程方式将边距和/或填充分配给标签