将前导零添加到列表并将修改后的值分配回数据框中的变量

adding leading zeros to a list AND assign the modified values back to the variable in the data frame

我正在使用的数据集是一个 .csv 文件,它有 13 列,其中 headers(粗体)和 302 行:id:1 ,2,..., 302), source_code: : AAA, BBB, CCC., 日期、日、月、年、时间、小时, 分, 秒, 纬度, 经度, 铭文: NA, 1 or 0.

我希望 ID 列 (1, 2, 3,...,302) 具有 3 位数字,必要时使用普遍的零 (001, 002, ..., 010, ..., 302).

这是我所做的:

data<-read.csv("C:/TFM/corrected_filtered_coordinates.csv")

str(data)

#'data.frame': 302 obs. of 13 variables:

#$ id : int 1 2 3 4 5 6 7 8 9 10 ...

data$id <- as.numeric(data$id)

sprintf("%03d", data$id)

#sprintf("%03d", data$id)

#[1] "001" "002" "003" "004" "005" "006" "007" "008" "009" "010"

str(data)

#'data.frame': 302 obs. of 13 variables:

#$ id : int 1 2 3 4 5 6 7 8 9 10 ...

到目前为止,我发现了 2 个可用的函数(在我 运行 其中一个之后,控制台中会出现一个包含转换后 ID 的列表):

formatC(data$id, width = 3, format = "d", flag = "0")sprintf("%03d", data$id)

然而

当我使用 datastr(data) 显示这些函数中的任何一个 运行 后的数据时,ID 仍然没有前导零出现!

我尝试将 ID 更改为字符 #data$id <- as.character(data$id) 和数字 data$id <- as.numeric(data$id) before 运行 函数...但没有似乎有效!

如何让 ID 保持更改? 我无法将修改后的值分配回数据框中的变量

提前致谢!!!

有点猜测,但听起来您未能将修改后的值分配回数据框中的变量。

dd <- data.frame(id=c(1,2,3,10))
dd$id <- sprintf("%03d", dd$id)
str(dd)
## 'data.frame':    4 obs. of  1 variable:
## $ id: chr  "001" "002" "003" "010"
  • 我使用 dd 而不是 data 作为数据框的名称; data 也是 R 中一个 built-in 函数的名称,最好避免使用