手动编辑数据框列中的单元格,并引用一行

时间:2013-09-26 14:03:41

标签: r

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

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

非常感谢提前。

1 个答案:

答案 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帮助页面。