Regex 基于时间列合并两个数据帧
我试图根据Regex 基于时间列合并两个数据帧,regex,r,merge,Regex,R,Merge,我试图根据时间列合并两个数据帧。它们各自具有不同格式的时间值。它们看起来是这样的: Labourproductivity和DepressionFrame的示例数据集: Labourproductivity <- read.csv(text=" Time,LabourProductivity 2004 Q1,96.6 Q2,96.9 Q3,96.9 Q4,97.1 2005 Q1,97.6 Q2,99.0") Depressiondframe <- read.csv(text=" Ti
时间
列合并两个数据帧。它们各自具有不同格式的时间值。它们看起来是这样的:
Labourproductivity
和DepressionFrame
的示例数据集:
Labourproductivity <- read.csv(text="
Time,LabourProductivity
2004 Q1,96.6
Q2,96.9
Q3,96.9
Q4,97.1
2005 Q1,97.6
Q2,99.0")
Depressiondframe <- read.csv(text="
Time,DepressionCount
2004.00,875
2004.25,820
2004.50,785
2004.75,857
2005.00,844")
如何基于
时间
合并两个数据帧 这里有一种可能的方法。我们将使用zoo
包,该包将使用zoo::as.yearqtr
函数轻松地将DepressionFrame$Time
转换为所需的格式,而第二个更为复杂,我们将使用stringi::stri_extract_first_regex
和zoo::na.locf
来处理它。然后,只需简单的合并
即可完成任务
library(zoo)
library(stringi)
Depressiondframe$Time <- as.character(as.yearqtr(Depressiondframe$Time))
Labourproductivity$Time <- with(Labourproductivity,
paste(na.locf(stri_extract_first_regex(Time, "\\d{4}")),
stri_extract_first_regex(Time, "Q\\d")))
merge(Depressiondframe, Labourproductivity, by = "Time", all = TRUE)
# Time DepressionCount LabourProductivity
# 1 2004 Q1 875 96.6
# 2 2004 Q2 820 96.9
# 3 2004 Q3 785 96.9
# 4 2004 Q4 857 97.1
# 5 2005 Q1 844 97.6
# 6 2005 Q2 NA 99.0
图书馆(动物园)
图书馆(stringi)
DepressionFrame$Time@zx8754在编辑时也添加语言标记如何:)@Davidernburg不知怎的错过了它,而且,这个问题更多的是关于将2001 Q1
转换为2000.00
而不是merge
。
library(zoo)
library(stringi)
Depressiondframe$Time <- as.character(as.yearqtr(Depressiondframe$Time))
Labourproductivity$Time <- with(Labourproductivity,
paste(na.locf(stri_extract_first_regex(Time, "\\d{4}")),
stri_extract_first_regex(Time, "Q\\d")))
merge(Depressiondframe, Labourproductivity, by = "Time", all = TRUE)
# Time DepressionCount LabourProductivity
# 1 2004 Q1 875 96.6
# 2 2004 Q2 820 96.9
# 3 2004 Q3 785 96.9
# 4 2004 Q4 857 97.1
# 5 2005 Q1 844 97.6
# 6 2005 Q2 NA 99.0