r - 从管道分隔数字列表中获取模式

标签 r dplyr data-wrangling

我有一个字符变量,其中包含描述项目特征的代码。看起来像这样:

[1] "151"     "510|130|130"     "311|110" "140"     "160|160"     "160|160|130"
[7] "160"     "160"     "160"      "151"     "151"     "160|110"    

我需要提取项目的主要特征,即占主导地位的代码。如果没有主导代码,我选择第一个。结果是:

[1] "151"     "130"     "311"      "140"     "160"     "160"
[7] "160"     "160"     "160"      "151"     "151"     "160"    

关于如何实现这一目标有什么建议吗?

最佳答案

您可以使用strsplit来分割向量,并使用collapse::fmode来获取“主导”的值(所谓的统计模式),以及如果存在平局,则第一个值(这是 fmode 的默认行为):

x <- c("151", "510|130|130", "311|110")
as.numeric(sapply(strsplit(x, "\\|"), collapse::fmode))
#[1] 151 130 311

创建 mode 函数的其他方法(未直接在基础 R 中实现)可以在 here 中找到。 .

关于r - 从管道分隔数字列表中获取模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77451751/

相关文章:

R - 将向量传递给自定义函数到 dplyr::mutate

R:汇总多列(数字、字符)并删除 NA

r - 通过从另一个表中划分所有可能的列组合来创建新的数据框

image - r- 如何在 image.plot 中编辑 x 轴上的元素

R 正则表达式 : modifying digits of varying lengths at end of string

r - 使用 ggplot2 在 R 中绘制条形图

从嵌套数据框/小标题运行多个简单线性回归

r - 如何从冲突的年龄类别中计算数字年龄?

r - 使用特定于列的汇总统计数据按组列汇总数据框