【发布时间】:2017-05-10 15:54:15
【问题描述】:
假设我有两列,一列位置,一列日期,其中一些缺失。
City Date
1 Sheffield 19/05/1985
2 Sheffield 21/06/1986
3 Sheffield <NA>
4 Newcastle 14/07/1996
5 Newcastle <NA>
6 Liverpool 12/11/2001
我需要用一个虚拟日期(比如 1866 年 6 月 21 日)替换缺失的日期,但仅限于谢菲尔德市。
在 SQL 中,语法是:
UPDATE Dataframe SET Date = "21/06/1866" WHERE city="Sheffield"
在 R 中,我尝试了以下方法,但成功有限(甚至没有):
filter <- (Dataframe$Date == is.na(Dataframe$Date) & Dataframe$City =="Sheffield")
Dataframe[filter,"Date"] <- as.Date("1866/06/21")
但是这会引发以下错误:
[<-.data.frame(*tmp*, filter, "Date", value 中的错误 = -37814) : 数据框的下标赋值中不允许缺失值
有人有什么想法吗?我觉得这可能非常简单,但我只是还没有看到它是如何完成的。
【问题讨论】:
-
您是否尝试过 Dataframe$Date[(is.na(Dataframe$Date)) & (Dataframe$City==Sheffield) = as.Date("1866/06/21", "%Y /%m/%d")
-
@JustinKlevs 这缺少一个 ],可能是一个 , 否?
-
@patrick 是的,我的错字
标签: r dataframe logical-operators conditional-split