首页 > 解决方案 > 如何遍历 R 中的每一行并查看是否满足更改日期格式的条件?

问题描述

我有两个数据框 A 和 B

A 的日期格式为 yyyy-mm-dd

B 的日期格式为 mm/dd/yyyy

请注意,B 混合了日期和“对照”一词,因为并非所有日期都已填充(有些是本研究的对照,没有日期)

我需要 B 的日期看起来像 A 以便在我正在做的另一部分匹配日期相等的地方,并且由于它们的格式不同,我无法将它们等同起来。

我试着说 if date != 'control' then format the date,或者为每一行做一个 for 循环,但我什么也做不了。

我应该如何处理这个?

谢谢!

标签: rloopsdateformat

解决方案


我们可以自动将两个数据集中的日期格式化为Dateanydate

library(anytime)
A$date <- anydate(A$date)
B$date <- anydate(B$date)

或者base R,我们可以使用正确的format

A$date <- as.Date(A$date, format = "%Y-%m-%d")
B$date <- as.Date(B$date, format = "%m/%d/%Y")

请注意,如果有任何不是标准日期格式的值,即任何字符串,它将导致NA该元素。然后我们可以is.na用来过滤掉那些值或者改变它


如果我们想通过排除带有“控制”的行来子集数据

i1 <- A$date != 'control'
as.Date(A$date[i1], format = "%Y-%m-%d")

同样可以对“B”进行子集化,但这并不是真正需要的,因为NA它更容易操作


推荐阅读