gpt4 book ai didi

r - 将 POSIXct 转换为 Date 类的函数

转载 作者:行者123 更新时间:2023-12-05 01:01:54 24 4
gpt4 key购买 nike

您好,我正在尝试编写一个接收数据帧的函数,它将所有 POSIXct 或 POSIXlt 类型转换为 R 中的日期类型。我已经创建了函数的一部分,但我一直在迭代元素每个索引。

#Basic Data Frame
patientID <- c(1, 2, 3, 4)
AdmDate <- as.POSIXct(c('2010-10-11','2008-3-25','2016-4-23','2011-6-12'))
diabetes <- c("Type1", "Type2", "Type1", "Type2")
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, AdmDate, diabetes, status)


convertallPOSIXct <- function(data){
if(getdata[[is.POSIXt()=='TRUE']])
getdata[[]] <- class(as.Date())
}

getdata <- function(x) {
chr_test <- x %>%
map_chr(~ paste(class(.), collapse = "/"))
}

get data 函数似乎可以工作,但我不确定如何从 getdata 中获取每个元素并将其转换为 R 中的 Date 类。谢谢!

最佳答案

这是 lapply 的一个选项:

df <- patientdata

df[] <- lapply(df, function(x) {
if (inherits(x, "POSIXt")) as.Date(x) else x
})

str(df)
# 'data.frame': 4 obs. of 4 variables:
# $ patientID: num 1 2 3 4
# $ AdmDate : Date, format: "2010-10-11" "2008-03-25" ...
# $ diabetes : chr "Type1" "Type2" "Type1" "Type2"
# $ status : chr "Poor" "Improved" "Excellent" "Poor"

[] 是保留 data.frame 结构所必需的,否则您将得到一个普通列表。使用 inherits 而不是 class(object) == "some_class" 是首选,因为如果对象有多个类 -- POSIXt 对象 do -- 你仍然得到一个逻辑结果:

class(patientdata[,2]) == "POSIXt"
#[1] FALSE TRUE

inherits(patientdata[,2], "POSIXt")
#[1] TRUE

关于r - 将 POSIXct 转换为 Date 类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38807993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com