我有一个数据框
a c
1 98 1
2 99 2
3 100 3
4 101 4
5 102 5
6 103 6
7 999 7
8 1003 8
我希望将a列转换为b列,如下所示
a c b
1 98 1 0098
2 99 2 0099
3 100 3 0100
4 101 4 0101
5 102 5 0102
6 103 6 0103
7 999 7 0999
8 1003 8 1003
我目前使用的代码是
a <- c(98:103,999,1003)
c <- 1:8
b <- a
data <- data.frame(a,c,b)
for (i in 1:dim(data)[1]){
if (data[i,1]/100 <1) {
data[i,3] <- paste("00",data[i,1],sep="")
} else if (data[i,1]/1000 < 1){
data[i,3] <- paste(0,data[i,1],sep="")
} else{
data[i,3] <- data[i,1]
}
}
但是我发现这个代码执行速度非常慢,因为我的实际数据超过60,000个实例。
如何优化代码以完成任务?
答案 0 :(得分:0)
在@joran和@thelatemail的帮助下。 我用下面的代码解决了这个问题:
a <- c(98:103,999,1003)
c <- 1:8
data <- data.frame(a,c)
data$b <- sprintf("%04d",data$a)