继之前的问题之后,我想在格式错误时手动更改日期。使用示例数据框:
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)
确定哪些日期格式不正确(通过在错误日期时突出显示新闻),我想手动编辑dob列。
我该怎么做: 一个。确保结果日期由R识别。 湾通过引用ID列而不是单元格的相对位置(例如,不是列,行号)。
例如: ID 103成为01/09/2012 ID 105变为20/01/1999 ID 106变为01/04/1999
非常感谢提前。
答案 0 :(得分:0)
首先,如果您的变量是factor
(在您的示例中就是这种情况),您必须先将其转换为character
:
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
帮助页面。