2017-09-01 59 views
0

我试图找到一个更简单的方法来制作一个序列化变量名称的向量。你如何使用R中的顺序名称变量向量?

例如,数据中有很多变量,我想从数据中选择h190361,h190362,h190363,h190364,h190365。

在SAS或STATA或SPSS,如果你想挑选一些有序变量,可以简单的写“h190361-h190365”或“从h190361到h190365”

但我不知道任何简单的语法R.

硬盘的方式将是写所有的变量名,

x <- c(df$h190361, df$h190362, df$h190363, df$h190364, df$h190365) 

但如果有很多变数,这将是太多的工作。

,我想到了另外一个办法是使用“粘贴”语法,

k <- paste("h190", 361:365, sep = "") 
    x <- df[,k] 

返回期望的结果。然而,这看起来并不自然,并不像SAS,SPSS或STATA那样简单。

有没有更简单的方法或简单的语法来选择R中的排序变量?

谢谢。

+0

这应该在SO上提出,而不是在CV上。 –

+2

你可以尝试'unlist',即'unlist(df [paste0(“h”,190361:190365)])'' – akrun

回答

1

也许selectdplyr包?

select(df, h190361:h190365) 

或用管:

df %>% select(h190361:h190365) 

但要小心! select(df, X:Y)的意思是“采取列XdfY加上一切之间”,所以如果你有名字,比如说,XYZh190365之间h190361的某些列,他们将被列入了。

0

如果你能找到你想要轻松子集出哪些列,那么你可以做这样的事情..

df2 <- df[,1:4] 

然而,这种做法只会在有序的列上工作。

另一种方法是使用正则表达式。

df2 <- df[,grep("h190",colnames(df))] 

您可以在grep()中更改模式以满足您的需求。