2014-02-20 12 views
0

假設我有一個data.frame:如何引用多個變量與R中使用佔位符一個共同的前綴

x.a <- c(1,2,3,4,5) 
y.b <- c(2,3,4,5,6) 
y.c <- c(5,1,0,9,2) 
y.d <- c(5,6,7,3,1) 
x.e <- c(2,6,1,2,3) 

df <- data.frame(x.a,y.b,y.c,y.d,x.e) 

假設我想排名的變量YB,YC,YD:

df[2:4] <- sapply(df[2:4], function(x) rank(x)) 

有沒有辦法將函數應用於前綴爲y.的所有變量?例如: -

df[y.*] <- sapply(df[y.*], function(x) rank(x)) 
+0

http://stackoverflow.com/questions/15170777/add-a-rank-column-to-a-data-frame – ChathuraG

回答

5

隨着grep和正則表達式,像這樣:

df <- data.frame(x.a,y.b,y.c,y.d,x.e) 
df[, grep("y\\..", names(df))] 
    y.b y.c y.d 
1 2 5 5 
2 3 1 6 
3 4 0 7 
4 5 9 3 
5 6 2 1 

你必須逃離.在變量名,第二個是.一切匹配。

+0

謝謝!今天是學習R的好日子 - 第三個問題我得到了答案:) – iraserd

相關問題