【问题标题】:R equivalent of Stata *R相当于Stata *
【发布时间】:2015-03-04 02:26:20
【问题描述】:

在 Stata 中,如果我有这些变量:var1var2var3var4var5var6,我可以使用命令 var* 选择所有这些变量。 R 有类似的功能吗?

【问题讨论】:

  • 严格来说var*不是命令,而是使用特殊字符或通配符的varlist(变量名列表)。

标签: r stata


【解决方案1】:

“dplyr”包中的select 函数提供了几种灵活的方法来选择变量。例如,使用@Marius 的示例数据,尝试以下操作:

library(dplyr)
df %>% select(starts_with("var"))        # At the start
df %>% select(num_range("var", 1:3))     # specifying range
df %>% select(num_range("var", c(1, 3))) # gaps are allowed

【讨论】:

    【解决方案2】:

    你可以grep在列名之间做这种正则表达式匹配:

    x = c(1, 2, 3)
    df = data.frame(var1=x, var2=x, var3=x, other=x)
    df[, grep("var*", colnames(df))]
    

    输出:

      var1 var2 var3
    1    1    1    1
    2    2    2    2
    3    3    3    3
    

    所以,基本上只是使用通常的df[rows_to_keep, columns_to_keep] 索引语法,并将grep 的结果作为columns_to_keep 提供。

    【讨论】:

    • @bill999 为了安全起见(并匹配 Stata 查询),您需要使用 "^var*" 来确保 varname 以 "var" 开头。试试grep("var*",c("revarnish"))
    • @thelatemail 是的,你是对的。不需要*。啊,评论消失了,但是:"^var"就足够了;无需以* 结束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    相关资源
    最近更新 更多