【发布时间】:2020-04-17 22:39:28
【问题描述】:
我正在尝试将数据框分类。类似于您需要的维恩图,但我想以某种方式对列标题进行“grepl”采样。意思是,只要一个模式是共享的并且它满足数字阈值,它就可以被分类到所述类别中。
示例数据:
df <- data.frame(a_b_c = c(1,3,5,0,0), a_b=c(0,0,4,0,0), a_b_c_d=c(1,2,2,3,0),
b_d=c(0,0,3,2,3), a_c = c(1,5,1,0,0))
df
> a_b_c a_b a_b_c_d b_d a_c
> 1 0 1 0 1
> 3 0 2 0 5
> 5 4 2 3 1
> 0 0 3 2 0
> 0 0 0 3 0
期望的输出
df_final <- data.frame(df, category = c("Other", "Shared c", "Shared all", "Shared d", "Appears once"))
df_final
> a_b_c a_b a_b_c_d b_d a_c category
> 1 0 1 0 1 Other
> 3 0 2 0 5 Shared c
> 5 4 2 3 1 Shared all
> 0 0 3 2 0 Shared d
> 0 0 0 3 0 Appears once
我认为它涉及带有 case_when() 和/或 ifelse() 语句的整洁的 verse mutate 语句,但我无法正确理解逻辑。这是一个示例测试数据集,我的实际数据有 >20 列。所以这就是为什么我想用通配符对列标题进行分类。
接受任何和所有建议。
【问题讨论】:
-
这似乎是在 names 列上,而不是它们的值,对吗?