首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何知道一个表中有多少列至少有一个值>或一个数字的<?

我如何知道一个表中有多少列至少有一个值>或一个数字的<?
EN

Stack Overflow用户
提问于 2020-10-13 14:19:09
回答 4查看 61关注 0票数 0
代码语言:javascript
复制
library(tidyverse)
gbm_vec <- function(nsim = 1000, t = 5, mu = 0.1, sigma =.3, S0 = 3400, dt = 1/252) {
  epsilon <- matrix(rnorm(t*nsim, sd = .3, mean = .0004), ncol = nsim, nrow = t) 
                    gbm <- exp((mu - sigma * sigma / 2) * dt + sigma * epsilon * sqrt(dt)) 
                    gbm <- apply(rbind(rep(S0, nsim), gbm), 2, cumprod)
                    return(gbm)
}
nsim <- 1000
t <- 5
mu <- 0.1
sigma <- .3
S0 <- 3477.13
gbm <- gbm_vec(nsim, t, mu, sigma, S0) #function to have the table I'm talking about
View(gbm)

运行代码查看表。我如何知道1000列中有多少列的值至少大于3500?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-10-13 14:20:49

我们可以使用colSums

代码语言:javascript
复制
val <- 3500
sum(colSums(gbm > val) > 0)

colSums(gbm > val)计算列中的值总数,该值大于val。然后,我们计算出至少有多少列的值比带有valsum大1。

票数 1
EN

Stack Overflow用户

发布于 2020-10-13 14:30:02

下面是一种tidyverse方法,用mtcars演示,并检查所有数字列中的任何值>1:

代码语言:javascript
复制
mtcars %>% 
  summarise_if(is.numeric, ~any(. > 1)) %>% 
  gather() %>% 
  count(value)

#   value n
# 1 FALSE 2
# 2  TRUE 9

结果告诉您,有多少数值列至少有一个值>1,而有多少列没有。

票数 1
EN

Stack Overflow用户

发布于 2020-10-13 14:30:05

我认为@Ronak Shah的解决方案非常优雅。下面是另一个使用crossprod的选项

代码语言:javascript
复制
sum(crossprod(rep(1,nrow(gbm)),gbm)>0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64337027

复制
相关文章

相似问题

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