我有一个数据框(在R中),需要按样本名称的部分进行排序,以便进行分析.例如,每个样本在标题为"样本"的列中以这种格式编码:

推荐答案

听起来你的数据是这样的:

set.seed(1)

df <- data.frame(Sample = paste0("1.", sample(12), ".",sample(letters, 12), "2021"),
                 Data = runif(12))
df
#>        Sample      Data
#> 1   1.9.u2021 0.3823880
#> 2   1.4.j2021 0.8696908
#> 3   1.7.v2021 0.3403490
#> 4   1.1.n2021 0.4820801
#> 5   1.2.y2021 0.5995658
#> 6   1.5.g2021 0.4935413
#> 7   1.3.i2021 0.1862176
#> 8   1.8.o2021 0.8273733
#> 9   1.6.e2021 0.6684667
#> 10 1.11.t2021 0.7942399
#> 11 1.12.q2021 0.1079436
#> 12 1.10.w2021 0.7237109

要对其进行排序,我们可以找到字符串的数字部分,将其转换为数字并按其对数据帧进行排序:

df[order(as.numeric(gsub("^.*\\.(\\d+)\\..*$", "\\1", df$Sample))),]
#>        Sample      Data
#> 4   1.1.n2021 0.4820801
#> 5   1.2.y2021 0.5995658
#> 7   1.3.i2021 0.1862176
#> 2   1.4.j2021 0.8696908
#> 6   1.5.g2021 0.4935413
#> 9   1.6.e2021 0.6684667
#> 3   1.7.v2021 0.3403490
#> 8   1.8.o2021 0.8273733
#> 1   1.9.u2021 0.3823880
#> 12 1.10.w2021 0.7237109
#> 10 1.11.t2021 0.7942399
#> 11 1.12.q2021 0.1079436

reprex package(v2.0.1)于2022-03-20创建

R相关问答推荐

如何在R中正确对齐放射状图中的文本

更改绘图上的x轴断点,而不影响风险?

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

selectInput不返回ALL,并将因子转换为shiny 的数字

然后根据不同的列值有条件地执行函数

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

bslib::card_header中的shine::downloadButton,图标而不是文本

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

多个过滤器内的一个盒子在仪表板Quarto

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

将饼图插入条形图

R函数,用于生成伪随机二进制序列,其中同一数字在一行中不出现超过两次

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

汇总数据的Sheffe检验的P值(平均值和标准差)

自动STAT_SUMMARY统计与手动标准误差之间的差异

`-`是否也用于数据帧,有时使用引用调用?

防止正则表达式覆盖以前的语句

conditionPanel不考虑以下条件

用逗号拆分字符串,并删除一些字符

只有当我在循环的末尾放置一条print语句时,Foreach才会给出预期的输出