如何使用grep()使用R中的前缀对一组变量的操作创建带有后缀的新变量

时间:2014-02-20 14:14:11

标签: r dataframe

this one的后续问题:

假设我有一个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

1 个答案:

答案 0 :(得分:1)

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

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

df=cbind(df,df1)