1
這裏是我努力去理解的東西。想象一下,我有一個有2列的數據幀:爲什麼dplyr :: filter()包含哪些條件爲False的數據?
**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**
列匹配一年的條目。
所以,我寫了一個小的解析器,爲日期列假設一個更大的數據集:
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.讓我們假設我沒有在**Date**
列關心NA
值,每當NA
發生,我就要離開這個排。
會發生錯誤數據的你目前的樣本?什麼班是年?我會使用'lubridate :: year()'。 –
看看'strsplit(dateStr,「 - 」)[[1]] [1]' - 這只是第一行中的一個元素。使用它而不是覆蓋所有行的向量,很自然會得到奇怪的結果。 – Frank
@Frank,我覺得您可能有一點,請您詳細說明矢量化解決方案的外觀如何?我想我仍然有麻煩調整到R的矢量化性質。 –