R 将月度数据与季度数据合并?
我有两个数据集-一个是季度,我需要匹配每月数据。因此,季度数据中的值将在最终数据集中重复三次。我在下面创建了一个季度样本,但这需要在多个季度重复R 将月度数据与季度数据合并?,r,inner-join,R,Inner Join,我有两个数据集-一个是季度,我需要匹配每月数据。因此,季度数据中的值将在最终数据集中重复三次。我在下面创建了一个季度样本,但这需要在多个季度重复 month <- c(1/20, 2/20, 3/20) rating <- c(0.5,0.6,0.65) df1 <- cbind(month,rating) quarter <- c(“q1/20”) amount <- c(100) df2 <- cbind(quarter,amount) month假设
month <- c(1/20, 2/20, 3/20)
rating <- c(0.5,0.6,0.65)
df1 <- cbind(month,rating)
quarter <- c(“q1/20”)
amount <- c(100)
df2 <- cbind(quarter,amount)
month假设您有此数据
head(m.dat)
# month rating
# 1 1/18 0.91
# 2 2/18 0.94
# 3 3/18 0.29
# 4 4/18 0.83
# 5 5/18 0.64
# 6 6/18 0.52
head(q.dat)
# quarter amount
# 1 q1/18 1
# 2 q2/18 21
# 3 q3/18 91
# 4 q4/18 61
# 5 q1/19 38
# 6 q2/19 44
您可以使用分配矩阵qm
将月份信息与季度进行匹配
qm <- matrix(c(1:12, paste0("q", rep(1:4, each=3))), 12, 2)
m.dat$quarter <- paste0(qm[match(qm[, 1], gsub("(^\\d*).*", "\\1", m.dat$month)), 2],
"/",
sapply(strsplit(m.dat$month, "/"), `[`, 2))
玩具数据
m.dat假设您有此数据
head(m.dat)
# month rating
# 1 1/18 0.91
# 2 2/18 0.94
# 3 3/18 0.29
# 4 4/18 0.83
# 5 5/18 0.64
# 6 6/18 0.52
head(q.dat)
# quarter amount
# 1 q1/18 1
# 2 q2/18 21
# 3 q3/18 91
# 4 q4/18 61
# 5 q1/19 38
# 6 q2/19 44
您可以使用分配矩阵qm
将月份信息与季度进行匹配
qm <- matrix(c(1:12, paste0("q", rep(1:4, each=3))), 12, 2)
m.dat$quarter <- paste0(qm[match(qm[, 1], gsub("(^\\d*).*", "\\1", m.dat$month)), 2],
"/",
sapply(strsplit(m.dat$month, "/"), `[`, 2))
玩具数据
m.dat假设您有此数据
head(m.dat)
# month rating
# 1 1/18 0.91
# 2 2/18 0.94
# 3 3/18 0.29
# 4 4/18 0.83
# 5 5/18 0.64
# 6 6/18 0.52
head(q.dat)
# quarter amount
# 1 q1/18 1
# 2 q2/18 21
# 3 q3/18 91
# 4 q4/18 61
# 5 q1/19 38
# 6 q2/19 44
您可以使用分配矩阵qm
将月份信息与季度进行匹配
qm <- matrix(c(1:12, paste0("q", rep(1:4, each=3))), 12, 2)
m.dat$quarter <- paste0(qm[match(qm[, 1], gsub("(^\\d*).*", "\\1", m.dat$month)), 2],
"/",
sapply(strsplit(m.dat$month, "/"), `[`, 2))
玩具数据
m.dat假设df1和df2是末尾注释中所示的数据帧,则在每个帧中创建一个yq列,该列为类yearqtr,并在此基础上合并:
library(zoo)
df1 <- transform(df1, yq = as.yearqtr(month, "%m/%y"))
df2 <- transform(df2, yq = as.yearqtr(quarter, "q%q/%y"))
merge(df1, df2, by = "yq", all = TRUE)
我们还可以考虑将月份列转换为使用AYNOMN类列。
as.yearmon
注
df1假设df1和df2是末尾注释中所示的数据帧,则在每个帧中创建一个yq列,该列为类yearqtr,并在此基础上合并:
library(zoo)
df1 <- transform(df1, yq = as.yearqtr(month, "%m/%y"))
df2 <- transform(df2, yq = as.yearqtr(quarter, "q%q/%y"))
merge(df1, df2, by = "yq", all = TRUE)
我们还可以考虑将月份列转换为使用AYNOMN类列。
as.yearmon
注
df1假设df1和df2是末尾注释中所示的数据帧,则在每个帧中创建一个yq列,该列为类yearqtr,并在此基础上合并:
library(zoo)
df1 <- transform(df1, yq = as.yearqtr(month, "%m/%y"))
df2 <- transform(df2, yq = as.yearqtr(quarter, "q%q/%y"))
merge(df1, df2, by = "yq", all = TRUE)
我们还可以考虑将月份列转换为使用AYNOMN类列。
as.yearmon
注
df1什么是q1
(信息缺失)?对不起,q1/20只是表明观察是从2020年第一季度开始的。编辑-希望这能澄清问题。嗨,奥利。在您的示例中,数据是以矩阵而不是数据帧的形式出现的。这是故意的吗?嗨,艾伦,很抱歉,它们应该是数据帧。什么是q1
(信息缺失)?很抱歉,q1/20只是表明观察是从2020年第1季度开始的。编辑-希望这能澄清问题。嗨,奥利。在您的示例中,数据是以矩阵而不是数据帧的形式出现的。这是故意的吗?嗨,艾伦,很抱歉,它们应该是数据帧。什么是q1
(信息缺失)?很抱歉,q1/20只是表明观察是从2020年第1季度开始的。编辑-希望这能澄清问题。嗨,奥利。在您的示例中,数据是以矩阵而不是数据帧的形式出现的。这是故意的吗?嗨,艾伦,对不起,它们应该是数据帧。