gpt4 book ai didi

r - 根据特定阈值对行进行子集化

转载 作者:行者123 更新时间:2023-12-01 16:23:14 24 4
gpt4 key购买 nike

我想根据阈值获取数据框的列观察值的子集。我将更详细地向您解释这个问题。

我有一个数据框,其中包含 35 名肺腺癌患者的甲基化水平。这是我的数据的子集:

> df.met[1:5,1:5]
A2BP1 A2M A2ML1 A4GALT AAAS
paciente6 0.36184475 0.4555788 0.6422624 0.08051388 0.15013343
paciente7 0.47566878 0.7329827 0.4938048 0.45487573 0.10827520
paciente8 0.17455497 0.7528387 0.5686839 0.37018038 0.12423923
paciente9 0.04830471 0.5166676 0.8878207 0.08881092 0.11779075
paciente10 0.16757806 0.7896194 0.5408747 0.35315243 0.09234602

现在,我需要获取另一个对象(具有相同的列数,但行数较少,并且每列都不同),并且初始数据帧的所有列的值的子集大于 0.1。

我的目的是获得一个像这样的对象(我不知道是否可能......):

            A2BP1       A2M     A2ML1     A4GALT       AAAS
paciente6 0.36184475 0.4555788 0.6422624 0.15013343
paciente7 0.47566878 0.7329827 0.4938048 0.45487573 0.10827520
paciente8 0.17455497 0.7528387 0.5686839 0.37018038 0.12423923
paciente9 0.5166676 0.8878207 0.11779075
paciente10 0.16757806 0.7896194 0.5408747 0.35315243

换句话说,我想避免我的数据框,值小于 0.1。

非常感谢!

最佳答案

您可能需要

df.met[!rowSums(df.met <= 0.1),,drop=FALSE]
# A2BP1 A2M A2ML1 A4GALT AAAS
#paciente7 0.4756688 0.7329827 0.4938048 0.4548757 0.1082752
#paciente8 0.1745550 0.7528387 0.5686839 0.3701804 0.1242392

更新

基于编辑

is.na(df.met) <- df.met <= 0.1
df.met
# A2BP1 A2M A2ML1 A4GALT AAAS
#paciente6 0.3618447 0.4555788 0.6422624 NA 0.1501334
#paciente7 0.4756688 0.7329827 0.4938048 0.4548757 0.1082752
#paciente8 0.1745550 0.7528387 0.5686839 0.3701804 0.1242392
#paciente9 NA 0.5166676 0.8878207 NA 0.1177907
#paciente10 0.1675781 0.7896194 0.5408747 0.3531524 NA

使用data.table

library(data.table)#v1.9.5+
setDT(df.met, keep.rownames=TRUE)[]

for(j in 2:ncol(df.met)){
set(df.met, i=which(df.met[[j]] <=0.1), j=j, value=NA)
}

df.met
# rn A2BP1 A2M A2ML1 A4GALT AAAS
#1: paciente6 0.3618447 0.4555788 0.6422624 NA 0.1501334
#2: paciente7 0.4756688 0.7329827 0.4938048 0.4548757 0.1082752
#3: paciente8 0.1745550 0.7528387 0.5686839 0.3701804 0.1242392
#4: paciente9 NA 0.5166676 0.8878207 NA 0.1177907
#5: paciente10 0.1675781 0.7896194 0.5408747 0.3531524 NA

数据

df.met <- structure(list(A2BP1 = c(0.36184475, 0.47566878, 0.17455497, 
0.04830471, 0.16757806), A2M = c(0.4555788, 0.7329827, 0.7528387,
0.5166676, 0.7896194), A2ML1 = c(0.6422624, 0.4938048, 0.5686839,
0.8878207, 0.5408747), A4GALT = c(0.08051388, 0.45487573, 0.37018038,
0.08881092, 0.35315243), AAAS = c(0.15013343, 0.1082752, 0.12423923,
0.11779075, 0.09234602)), .Names = c("A2BP1", "A2M", "A2ML1",
"A4GALT", "AAAS"), class = "data.frame", row.names = c("paciente6",
"paciente7", "paciente8", "paciente9", "paciente10"))

关于r - 根据特定阈值对行进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30967012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com