Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在给定的data.frame中进行自定义数字格式转换?_R_Dataframe - Fatal编程技术网

如何在给定的data.frame中进行自定义数字格式转换?

如何在给定的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

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