0

继之前的问题之后,我想在格式错误时手动更改日期。使用示例数据框:

ID <- c(101,102,103,104,105,106,107)
dob <- c("20/04/2001","29/10/2000","September 1 2012","15/11/00","20.01.1999","April 20th 1999", "04/08/01")
df <- data.frame(ID, dob)

确定了哪些日期的格式不正确(通过在日期错误时突出显示 NA),然后我想手动编辑 dob 列

我该怎么做:确保结果日期被 R. b. 识别。通过引用 ID 列而不是单元格的相对位置(例如,不是列、行号)。

例如: ID 103 变为 01/09/2012 ID 105 变为 20/01/1999 ID 106 变为 01/04/1999

提前谢谢了。

4

1 回答 1

0

首先,如果您的变量是 a factor(在您的示例中就是这种情况),您必须将其转换为characterfirst :

df$dob <- as.character(df$dob)

然后,您不应该通过行号来修改数据,而是通过选择要更改的值。像这样的东西:

df$dob[df$dob=="September 1 2012"] <- "01/09/2012"
df$dob[df$dob=="April 20th 1999"] <- "20/04/1999"

另一种语法是使用within

df <- within(df, {
    dob <- as.character(dob)
    dob[dob=="September 1 2012"] <- "01/09/2012"
    dob[dob=="April 20th 1999"] <- "20/04/1999"
})       

一旦您的日期都采用完全相同的格式,您必须将它们转换为来自基本 R 或包的日期类之一。例如,查看strptime帮助页面。

于 2013-09-26T14:20:09.123 回答