2017-09-01 4 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) 

しかし、注意してください!あなたは名前、たとえば、XYZh190361間とh190365のいくつかの列を持っている場合、彼らはあまりにも含まれることになるのでselect(df, X:Y)は、「間に列XdfからYプラスすべてを取る」という意味します。あなたは簡単にサブセットする列を見つけることができれば

0

、その後、あなただけの

df2 <- df[,1:4] 

しかし、このアプローチは、シーケンスされた列に働くだろう。..ような何かを行うことができます。

もう1つの方法は、正規表現を使用することです。

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

grep()のパターンは、必要に応じて変更できます。

関連する問題