我有两个数据文件。
例如..
数据集1。
ID PM
1 5
2 10
... ...
1500 25
数据集2。
alpha beta
5 6
1 2
... ...
我最终必须使用数据集 1 中每个 ID 的所有系数组合(alpha 和 beta)。例如,如果我在数据集 1 中有 10 个观测值,在数据集 2 中有 10 个系数组合,我的输出表应该有 100 个不同的输出值 (10*10=100)。
for (i in cmaq$FID) {
mean=cmaq$PM*IER$alpha*IER$beta
}
我使用上面的代码来做我想做的事情,但它只给了我 10 个输出值而不是 100 个。我认为首先使用 split 函数,并以某种方式将其与第二个数据集一起使用会起作用,但还没有弄清楚如何...
你可以这样做:
df1 = data.frame(
ID = c(1, 2, 1500),
PM = c(5, 10, 25)
)
df2 = data.frame(
alpha = c(5, 6),
beta = c(1, 2)
)
library(tidyverse)
library(dplyr)
df1 %>%
group_by(ID) %>%
do(data.frame(result = .$PM * df2$alpha * df2$beta,
alpha = df2$alpha,
beta = df2$beta))
我们可以用
outer
来做到这一点
data.frame(ID = rep(df1$ID, each = nrow(df2)), alpha = df2$alpha,
beta = df2$beta, result = c(t(outer(df1$PM, df2$alpha*df2$beta))))
# ID alpha beta result
#1 1 5 1 25
#2 1 6 2 60
#3 2 5 1 50
#4 2 6 2 120
#5 1500 5 1 125
#6 1500 6 2 300
df1 <- structure(list(ID = c(1, 2, 1500), PM = c(5, 10, 25)), .Names = c("ID",
"PM"), row.names = c(NA, -3L), class = "data.frame")
df2 <- structure(list(alpha = c(5, 6), beta = c(1, 2)), .Names = c("alpha",
"beta"), row.names = c(NA, -2L), class = "data.frame")