Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将月度数据与季度数据合并?_R_Inner Join - Fatal编程技术网

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季度开始的。编辑-希望这能澄清问题。嗨,奥利。在您的示例中,数据是以矩阵而不是数据帧的形式出现的。这是故意的吗?嗨,艾伦,对不起,它们应该是数据帧。