2017-09-01 109 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()中更改模式以滿足您的需求。