我有一个数据帧列表,每个数据帧有8个变量。第五个变量是一个日期,我想使用lubridate将它从类字符转换为日期。日期格式为dd-mmm-yy。目前我正在使用
firstOfMonth <- lapply(fileList,function(x) { x[5] <-
as.Date(strftime(x, format="%d-%b-y"))
})
但是我收到了以下错误。
Error in as.POSIXlt.default(x, tz = tz) :
不知道如何转换&#39; x&#39;上课“POSIXlt”
此外,我想将第8列的类更改为数字。以下未成功。
lapply(listDF, function(df) mutate_at(df, vars(matches("^Amount")), as.numeric))
Name Address City District Date Visit Completed Amount
Baxter 1211 South Ave Akron A 4-Mar-22 Y Y 12.02
Christ 105 Main Str Akron B 4-Mar-22 Y N 0
Matthews 152 5th Str Akron A 4-Mar-22 N N 0
James 45 River Rd Akron C 4-Mar-22 Y Y 24.25
Lewis 92 Washington Str Akron D 4-Mar-22 Y Y 16.5
答案 0 :(得分:2)
as.Date
的格式应为
as.Date(x, format="%d-%b-%y") #note the `y` in the OP's code
除此之外,我们只会将第5列分配到Date
列,但不会返回x
,即data.frame
lapply(fileList,function(x) {
x[,5] <- as.Date(x[,5], format="%d-%b-%y");
x})
使用transform
(我们正在更改多个列)
lapply(fileList, transform, Date = as.Date(Date, format = "%d-%b-%y"),
Amount = as.numeric(as.character(Amount))))
此外,尚不清楚“金额”是否为&#39;是factor
等级。如果只是character
课程,请删除as.character
使用tidyverse
,可以使用map
(来自purrr
)和mutate
(来自dplyr
)
library(tidyverse)
map(fileList, ~ .x %>%
mutate(Date = dmy(Date),
Amount = as.numeric(as.character(Amount))))