这是我难以理解的事情。想象一下,我有一个包含2列的数据框:
**Year** **Date**
1925 1925-01-02
1941 1925-02-03
1990 1990-01-02
1956 NA
1990 1990-01-02
2002 2004-01-02
我正在尝试过滤掉**Year**
列中的值与**Date**
列中的年份不匹配的所有条目。
所以,我为 Date 列编写了一个小解析器,假设数据集要大得多:
dateParser <- function(date) {
dateStr <- toString(date)
yearStr <- strsplit(dateStr, "-")[[1]][1]
yearInt <- as.integer(yearStr)
return(yearInt)
}
随后我使用dplyr::filter()
来过滤掉这些事件:
noMismatch <- dplyr::filter(data, as.integer(data$Year) == dateParser(data$Date))
然而,我仍然看到结果数据框中的某些行与年份不匹配。为什么?
P.S。假设我不关心NA
列中的**Date**
值,并且每当NA
出现时我都会离开此行。
答案 0 :(得分:1)
这可能与您的
有关dateParser(data$Date)
不会以数据格式返回您正在寻找的内容。
尝试:
library(lubridate)
library(dplyr)
noMismatch <- filter(data, as.integer(data$Year) == year(data$Date))