如何在给定的data.frame中进行自定义数字格式转换?
我有一个data.frame,它有两列。但是,我需要将当前格式转换为5位整数的如何在给定的data.frame中进行自定义数字格式转换?,r,dataframe,R,Dataframe,我有一个data.frame,它有两列。但是,我需要将当前格式转换为5位整数的psw列格式。如何将psw列中的1位数字自动更改为5位?如何在R中轻松完成此操作?谢谢 这是可复制的数据框 mydat <- data.frame(ID=LETTERS[seq( from = 1, to = 6)], psw=c(10501,3,80310,8930,234,1)) > mydat ID psw 1 A 10501 2 B 3 3
psw
列格式。如何将psw
列中的1位数字自动更改为5位?如何在R中轻松完成此操作?谢谢
这是可复制的数据框
mydat <- data.frame(ID=LETTERS[seq( from = 1, to = 6)],
psw=c(10501,3,80310,8930,234,1))
> mydat
ID psw
1 A 10501
2 B 3
3 C 80310
4 D 8930
5 E 234
6 F 1
不能在保持
psw
列为数字的情况下执行此操作,但可以将其格式化为字符向量的特定宽度。以下是两种方法:
在base R中,您可以使用formatC()
:
甚至可以在
base-R
中使用sprintf
mydat$psw <- sprintf("%05d",mydat$psw)
mydat
# ID psw
# 1 A 10501
# 2 B 00003
# 3 C 80310
# 4 D 08930
# 5 E 00234
# 6 F 00001
mydat$psw
mydat <- data.frame(ID=LETTERS[seq( from = 1, to = 6)],
psw=c(10501,3,80310,8930,234,1))
mydat$psw <- formatC(mydat$psw, width = 5, format = "d", flag = "0")
mydat
# ID psw
# 1 A 10501
# 2 B 00003
# 3 C 80310
# 4 D 08930
# 5 E 00234
# 6 F 00001
install.packages("stringr")
library(stringr)
mydat <- data.frame(ID=LETTERS[seq( from = 1, to = 6)],
psw=c(10501,3,80310,8930,234,1))
mydat$psw <- str_pad(mydat$psw, width = 5, pad = "0")
mydat
# ID psw
# 1 A 10501
# 2 B 00003
# 3 C 80310
# 4 D 08930
# 5 E 00234
# 6 F 00001
mydat$psw <- sprintf("%05d",mydat$psw)
mydat
# ID psw
# 1 A 10501
# 2 B 00003
# 3 C 80310
# 4 D 08930
# 5 E 00234
# 6 F 00001