首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中的表中保存逻辑值的计数

如何在R中的表中保存逻辑值的计数
EN

Stack Overflow用户
提问于 2022-03-10 17:02:26
回答 1查看 21关注 0票数 0

我有一个df "merged.blood.BP.anthrop_1row“,它有250个代谢物的数据。

首先,我要检查250个代谢物(> 4*SD)中的离群值。

我创建了以下函数,并认为可以轻松地将输出保存在一个新的df中,但不能

你能帮帮忙吗

代码语言:javascript
复制
#create a function to know how many outliers we have in each metabolite

show_outliers <- function (x) {
  p<-table(abs(x)>mean(x,na.rm=T)+4*sd(x,na.rm=T))
  ifelse(is.na(p[2]),print (0),print(p[2]))
}

#create dataset
outliers_results<-as.data.frame(matrix(nrow = 250, ncol = 2))
names(outliers_results)<-c('metabolite', 'outliers_4_SD') 
outliers_results[1:250,1]<-names(merged.blood.BP.anthrop_1row[c(1:500)])

####
for (q in c(1:250)) {
  outliers_results[1:250,2]<- show_outliers(merged.blood.BP.anthrop_1row[,q])
       }

但似乎不起作用

我想要一个df,比如:

代码语言:javascript
复制
metabolites      outliers_4_SD
Acetate          0
HDL              2
LDL              1

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-10 17:22:48

这里有一些可能性。请注意,我已经使用3*sd在一个小数据集中获取了一些TRUE值。

代码语言:javascript
复制
> # The function
> show_outliers <- function (x) {
+   return(abs(x - mean(x, na.rm = TRUE)) > 3 * sd(x, na.rm = TRUE))
+ }

> # Fake data
> dat <- data.frame(met = rep(c('a', 'b', 'c'), each = 10), y = rnorm(30))
> # Add a couple outliers
> dat$y[sample(1:nrow(dat), 2)] <- 40

> # Finally, a table
> table(dat$met, show_outliers(dat$y))

    FALSE TRUE
  a     9    1
  b     9    1
  c    10    0

> # Or . . .
> dat$outlier <- show_outliers(dat$y)
> # Option 1
> by(dat$outlier, dat$met, sum)
dat$met: a
[1] 1
------------------------------------------------------------
dat$met: b
[1] 1
------------------------------------------------------------
dat$met: c
[1] 0

> # Option 2
> aggregate(dat$outlier, list(dat$met), sum)
  Group.1 x
1       a 1
2       b 1
3       c 0

> # Option 3
> aggregate(dat[, 'outlier', drop = FALSE], dat[, 'met', drop = FALSE], sum)
  met outlier
1   a       1
2   b       1
3   c       0
> # There are other similar approaches that would work
>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71428026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档