【问题标题】:How do I create a binary vector based on N percentile?如何创建基于 N 个百分位数的二元向量?
【发布时间】:2021-09-29 09:27:45
【问题描述】:

如何为高 25% 基因表达编码为 1 而所有其他患者编码为 0 的患者创建二进制向量(命名为 group)?

> dput(head(dat, 20))
c(14.0217647549219, 4.38634192539018, 11.230612647966, 13.5882888840484, 
10.2699597878478, 8.09562488203986, 14.1224780341231, 10.4488388145038, 
12.2745444001468, 9.09203349810451, 14.3513862469323, 11.5782968747535, 
13.6411144041398, 9.79892114560863, 11.1019611651618, 12.5146158084875, 
12.643970834391, 1.09720624597437, 5.83979838350692, 11.1604484254692
)

【问题讨论】:

    标签: r dataframe matrix


    【解决方案1】:

    我们可以使用quantile 来创建群组

    dat$group <- with(dat, +(V1 >= quantile(V1, 0.75)))
    dat$group
    [1] 0 1 0 0 0 0 1 0
    

    更新

    根据 cmets,OP 的 'dat' 是 vector

    dat <-  c(14.0217647549219, 4.38634192539018, 11.230612647966, 13.5882888840484, 10.2699597878478, 8.09562488203986, 14.1224780341231, 10.4488388145038, 12.2745444001468, 9.09203349810451, 14.3513862469323, 11.5782968747535, 13.6411144041398, 9.79892114560863, 11.1019611651618, 12.5146158084875, 12.643970834391, 1.09720624597437, 5.83979838350692, 11.1604484254692 )
    

    因此,我们可以直接在对象上应用quantile

    group <- +(dat >= quantile(dat, 0.75))
    out <- data.frame(V1 = dat, group)
    

    -输出

     out
              V1 group
    1  14.021765     1
    2   4.386342     0
    3  11.230613     0
    4  13.588289     1
    5  10.269960     0
    6   8.095625     0
    7  14.122478     1
    8  10.448839     0
    9  12.274544     0
    10  9.092033     0
    11 14.351386     1
    12 11.578297     0
    13 13.641114     1
    14  9.798921     0
    15 11.101961     0
    16 12.514616     0
    17 12.643971     0
    18  1.097206     0
    19  5.839798     0
    20 11.160448     0
    

    数据

    dat <- structure(list(V1 = c(4.124, 5.215, 1.368, 0.325, 0.368, 3.653, 
    36.12, 0.124)), class = "data.frame", row.names = c("1", "2", 
    "3", "4", "5", "6", "7", "8"))
    

    【讨论】:

    • 我有一个大数据集。如何创建数据框?
    • @melil 对不起,我不明白你的问题。为什么需要创建数据框?您已经提供了一个示例,带有quantile 的代码可以处理向量,即提取的列。
    • @melil 你的意思是你有一些文件,你想读取数据吗?你可以使用dat &lt;- read.csv("yourfile.csv")
    • 很抱歉给您带来了困惑。我的意思是你答案的dat &lt;- structure(...) 部分。
    • @melil 只是使用dput(dat) 它给出了数据的结构,因此如果您复制帖子中的代码并执行,我们将拥有相同的数据结构。通常,当人们显示他们的数据(如您所显示的)时,可能会出现一些问题,即您的数据列可能具有不同的类型,并且某些代码不起作用。有了dput,你我或者任何人都可以使用相同类结构的相同数据
    猜你喜欢
    • 2021-03-30
    • 2022-12-31
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2021-12-26
    • 2021-07-19
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多