[R-br] Subset a data.frame com base no valor absoluto de uma coluna
Marcelo Laia
marcelolaia em gmail.com
Sáb Abr 25 20:47:14 -03 2020
Prezado(a),
Tenho o seguinte problema:
data <- replicate(5, rnorm(10))
colnames(data) <- paste("Sample", c(1:ncol(data)))
rownames(data) <- paste("Gene", c(1:nrow(data)))
head(data)
Sample 1 Sample 2 Sample 3 Sample 4 Sample 5
Gene 1 -1.29177540 2.61720282 -0.64705357 -2.05636255 0.5752323
Gene 2 -1.20619719 1.13791932 1.12844157 -0.04053514 1.2973240
Gene 3 -0.15952476 -0.56391140 -1.34226004 -1.21020574 -1.1353717
Gene 4 1.58893451 -1.33082381 0.02267418 1.42659928 2.2377680
Gene 5 -0.56417983 -0.14454059 -0.14543579 0.43021823 -1.1564112
Gene 6 -0.01443123 0.08013149 0.44877039 -0.38360173 1.7286058
Gene 7 -0.40133700 -0.84755154 -1.05251409 1.87298617 0.7788947
Gene 8 -1.81773166 -1.50967753 0.30168885 1.06245963 0.2409281
Gene 9 -2.27682903 0.83455263 -0.93035283 -0.49503281 -0.7293654
Gene 10 -0.19309118 -0.84698014 -0.12649364 -1.32398348 1.3218277
Eu desejo fazer um subset em um novo data.frame com os dados das
colunas 1 e 2 (Sample 1 e Sample 2) baseados no valor absoluto da
coluna 4 (Sample 4).
Eu tentei o seguinte:
mydata <- subset(data, (data[ ,4]>abs(1.3)))
mydata
Sample 1 Sample 2 Sample 3 Sample 4 Sample 5
Gene 4 1.588935 -1.3308238 0.02267418 1.426599 2.2377680
Gene 7 -0.401337 -0.8475515 -1.05251409 1.872986 0.7788947
No entanto, neste primeiro passo ele só pega os positivos da coluna 4
que são maiores que 1,3. Os valores negativos maiores que módulo de
-1,3 são todos excluídos.
No segundo passo eu excluiria as colunas 3, 4 e 5.
myvars <- colnames(mydata) %in% c("Sample 3", "Sample 4", "Sample 5")
mydata2 <- mydata[!myvars]
Como não consegui obter o primeiro passo, o segundo também não rodou.
Obrigado
--
Marcelo
Mais detalhes sobre a lista de discussão R-br