我有两个数据框,每个数据框都有220个观测值和80个变量。第一个数据框df1只包含数据点1、2和3。第二个数据框df2包含不同的数字值,包括小数,如0.12、-0.03、0.01等(用于表示给定月份的市值加权股票回报)。注:原始数据集的长度为80。
例如:
如何根据df1中的值对df2的行进行求和,并将其转换为一个矩阵,其中有220个观测值和3个变量。请注意,df1和df2具有相同的列名且顺序相同。如何基于df1的指示变量创建第三个数据框df3,通过对df2的行进行求和?我想根据df1中的值对df2的行进行求和,以创建df3。
让我们首先看一下
以下是关于
基于股票的更实用的解释。假设
例如:
df1 = data.frame(a = c(2, 2, 1), b = c(3, 2, 3), c = c(1, 1, 2), d = c(3, 3, 1))
a b c d
1 2 3 1 3
2 2 2 1 3
3 1 3 2 1
df2 = data.frame(a = c(0.1, 0.1, 0.2), b = c(0.3, 0.4, 0.6), c = c(0.2, 0.3, 0.5), d = c(0.1, 0.5, 0.6))
a b c d
1 0.1 0.3 0.2 0.1
2 0.1 0.4 0.3 0.5
3 0.2 0.6 0.5 0.6
如何根据df1中的值对df2的行进行求和,并将其转换为一个矩阵,其中有220个观测值和3个变量。请注意,df1和df2具有相同的列名且顺序相同。如何基于df1的指示变量创建第三个数据框df3,通过对df2的行进行求和?我想根据df1中的值对df2的行进行求和,以创建df3。
df3 =
X1 X2 X3
1 0.2 0.1 0.4
2 0.3 0.5 0.5
3 0.8 0.5 0.6
让我们首先看一下
(X1,1)
。在 df1
中,第一行只包含一个数据点,其值为 1
,即 (c,1)
。因此,我们将 df2
的第一行相加,得到 0.2
。现在看一下 (X1,3)
(列 X1
的最后一个值)。观察 df1
中的第三行,找到两个值为 1
的数据点。在 df2
中,这两个值分别是 0.2
(a,3)
和 0.6
(d,3)
,将它们相加得到 0.8
。以下是关于
df3
的说明:calculation = data.frame("1" = c("0+0+0.2+0", "0+0+0.3+0", "0.2+0+0+0.6"), "2" = c("0.1+0+0+0", "0.1+0.4+0+0", "0+0+0.5+0"), "3" = c("0+0.3+0+0.1", "0+0+0+0.5", "0+0.6+0+0"))
X1 X2 X3
1 0 + 0 + 0.2 + 0 0.1 + 0 + 0 + 0 0 + 0.3 + 0 + 0.1
2 0 + 0 + 0.3 + 0 0.1 + 0.4 + 0 + 0 0 + 0 + 0 + 0.5
3 0.2 + 0 + 0 + 0.6 0 + 0 + 0.5 + 0 0 + 0.6 + 0 + 0
基于股票的更实用的解释。假设
df1
是描述买入、持有和卖出建议的矩阵。df2
描述了市场加权股票回报率。所有的变量/列都是不同的股票。df3
创建了一个包含三个不同组合的矩阵。如果股票是“买入”,我想把它放在“买入”组合中。如果股票是“持有”,我想把它放在“持有”组合中,等等。这在Excel中可以使用嵌套的IF
、AND
、OR
函数轻松完成,但我不知道如何在R中完成。
df1
和df2
的原始数据长度都为80。 - Mataunited18