我有新冠肺炎变异的数据,以及每周对特定变异进行测序的基因序列比例(模拟数据如下).

df <- data.frame(
  Week_Count = seq(1,3),
  "Omicron BN.1" = c(0.05, 0.05, 0.10),
    "Omicron BA.5" = c(0.75, 0.50, 0.65),
    "Omicron CH.1" = c(0.10, 0.25, 0.10),
    Other = c(0.10, 0.20, 0.15))

> df
  Week_Count Omicron.BN.1 Omicron.BA.5 Omicron.CH.1 Other
1          1         0.05         0.75         0.10  0.10
2          2         0.05         0.50         0.25  0.20
3          3         0.10         0.65         0.10  0.15

我想要做的是识别保持在阈值以下的列--在本例中,识别其观测值不超过0.1的变量(即,识别小于或等于0.1的列观测值),并且对于那些保持小于或等于0.1的列,将它们分类/添加到Other列(这意味着不应该改变/重新分类Other).重要的是要注意,即使有1个大于0.1的观测值的列也应该保持数据集中的原样(以Omicron.CH.1为例).理想的输出将如下所示:

  Week_Count  Omicron.BA.5 Omicron.CH.1 Other
1          1     0.75         0.10       0.15
2          2     0.50         0.25       0.25
3          3     0.65         0.10       0.25

在我看来,这可能是一个复杂的代码,您介意解释一下您的解决方案吗?非常感谢.

推荐答案

基本R解决方案

df$Other <- rowSums(subset(df, select = sapply(df, \(x) all(x <= 0.1)))) + df$Other
df <- subset(df, select = !sapply(df, \(x) all(x <= 0.1)))

#    Week_Count Omicron.BA.5 Omicron.CH.1 Other
# 1          1         0.75         0.10  0.15
# 2          2         0.50         0.25  0.25
# 3          3         0.65         0.10  0.25

功能:

sapply(df, \(x) all(x <= 0.1))) return a TRUE/FALSE vector of columns where all values are below 0.1
This vector is first used so sum this subset of columns with the existing df$Other column (and overwrite the Other column with these new values).
And then used again to subset all columns where the all <= 0.1 is not (!...) TRUE

R相关问答推荐

如何在ggplot 2 geom_segment图表中将UTC转换为EET?

如何在弹性表中为类别值的背景上色

无法在我的情节中表现出显着的差异

更新合适的R mgcv::bam模型报告无效类型(关闭).'';错误

基于现有类创建类的打印方法(即,打印tibles更长时间)

如何使下一个按钮只出现在Rshiny 的一段时间后?""

在组中添加值增加和减少的行

如何同时从多个列表中获取名字?

在ggplot2的框图中绘制所有级别的系数

从非重叠(非滚动)周期中的最新数据向后开窗并在周期内计数

更新R中的数据表(使用data.table)

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

Geom_arcbar()中出错:找不到函数";geom_arcbar";

解析嵌套程度极高的地理数据

仅当后续值与特定值匹配时,才在列中回填Nas

R -基线图-图形周围的阴影区域

在ggplot2图表中通过端点连接点

R:如何在数据集中使用Apply

Broom.Mixed::Augment不适用于Sample::分析

按两个条件自动过滤数据