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
答案 0 :(得分:1)
df1=sapply(df[, grep("y\\..", names(df))], function(x) rank(x))
colnames(df1)=paste(colnames(df1),'ranked',sep=".")
df=cbind(df,df1)