首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:计算每个模型的行数,如果存在某些变量,则不包括这些变量

R:计算每个模型的行数,如果存在某些变量,则不包括这些变量
EN

Stack Overflow用户
提问于 2019-06-08 05:43:50
回答 1查看 88关注 0票数 1

我有一张表,看起来像这样:

代码语言:javascript
复制
modelsummary <- data.frame(term = c("(Intercept)", "month1", "month2", "RateDiff", "var1", "var2", "var3", "(Intercept)", "month1", "var1", "var2", "var3"), mod_id = c(1,1,1,1,1,1,1,2,2,2,2,2))

我想要计算每个模型中除intercept,month,ratediff之外的变量数量。我想要的输出是:

代码语言:javascript
复制
modelsummary <- data.frame(term = c("(Intercept)", "month1", "month2", "RateDiff", "var1", "var2", "var3", "(Intercept)", "month1", "var1", "var2", "var3"), mod_id = c(1,1,1,1,1,1,1,2,2,2,2,2), variables = c(3,3,3,3,3,3,3,3,3,3,3,3))

我尝试使用以下命令获取标志:

代码语言:javascript
复制
modelsummary$dim <- apply(modelsummary[, "term"], MARGIN = 1, 
                  function(x) sum(!(x %in% c(grep("month", x), "RateDiff")), na.rm = T))

但是grep(month)不能工作。

代码语言:javascript
复制
modelsummary$dim <- apply(modelsummary[, "term"], MARGIN = 1, 
                  function(x) sum(!(x %in% c("month", "RateDiff")), na.rm = T))

这是可行的,但是后缀后面的月份不会被捕获。

我希望在变量intercept、month和RateDiff上使用等同于~ilike~ from sql的东西,因为我不希望它区分大小写,并且希望允许在变量上使用后缀和前缀。我怎样才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-08 06:02:52

这里有一种使用dplyr的方法-

代码语言:javascript
复制
modelsummary %>% 
  mutate(
    variables = term[!grepl(pattern = "intercept|month|ratediff", tolower(term))] %>% 
      n_distinct()
  )

          term mod_id variables
1  (Intercept)      1         3
2       month1      1         3
3       month2      1         3
4     RateDiff      1         3
5         var1      1         3
6         var2      1         3
7         var3      1         3
8  (Intercept)      2         3
9       month1      2         3
10        var1      2         3
11        var2      2         3
12        var3      2         3

或者使用dplyrstringr

代码语言:javascript
复制
modelsummary %>%
  mutate(
    variables = str_subset(tolower(term), "intercept|month|ratediff", TRUE) %>% 
      n_distinct()
  )

如果要计算每个mutate的变量数量,请在mod_id之前添加group_by(mod_id)

在R基中-

代码语言:javascript
复制
modelsummary$variables <- with(modelsummary, 
               term[!grepl(pattern = "intercept|month|ratediff", tolower(term))] %>% 
               unique() %>% length()
               )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56501531

复制
相关文章

相似问题

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