2014-02-20 32 views
0

後續問題this one的前綴()通過grep的地址變量創建新變量:如何使用後綴從操作的一組使用R中

假設我有一個data.frame:

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) 

假設我想排名的所有變量的前綴y.

df[, grep("y\\..", names(df))] <- sapply(df[, grep("y\\..", names(df))], function(x) rank(x)) 

哪有我,而不是在變量來代替舊的價值觀等級,用新的後綴創建一個新變量?即要結束與data.frame:

x.a y.b y.c y.d x.e y.b.ranked y.c.ranked y.d.ranked 
    1 2 5 5 2  1   4   3 
    2 3 1 6 6  2   2   4 
    3 4 0 7 1  3   1   5 
    4 5 9 3 2  4   5   2 
    5 6 2 1 3  5   3   1 
+0

'cbind(DF,sapply(...))'?不過,我建議將您的數據格式更改爲「長格式」。這會讓你更容易。 – Roland

回答

1
df1=sapply(df[, grep("y\\..", names(df))], function(x) rank(x)) 

colnames(df1)=paste(colnames(df1),'ranked',sep=".") 

df=cbind(df,df1) 
+0

謝謝,我顯然正在試圖用僞裝僞造一些特別的東西。 – iraserd