【发布时间】:2020-07-27 15:02:07
【问题描述】:
我有两个数据集,每个数据集有 5 列和 10,000 行。我想从两个数据集之间的列中的值计算y,数据集1中的第1列和数据集2中的第1列;然后是数据集 1 中的第 2 列和数据集 2 中的第 2 列。y 在计算之前需要遵循一组规则。到目前为止我所做的一切都行不通,我无法弄清楚为什么以及是否有更简单的方法来完成所有这些操作。
- 从 t 分布创建数据
mx20 <- as.data.frame(replicate(10000, rt(20,19)))
mx20.50 <- as.data.frame(replicate(10000, rt(20,19)+0.5))
- 计算每个模拟样本的平均值
m20 <- apply(mx20, FUN=mean, MARGIN=2)
m20.05 <- apply(mx20.50, FUN=mean, MARGIN=2)
上述步骤 1 和 2_ 对来自 t 分布rt(30,29); rt(50,49); rt(100,99); and rt(1000,999)的五个样本大小重复
- 为每个 t 分布规范绑定表(创建 data.frame)
tbl <- cbind(m20, m30, m50, m100, m1000)
tbl.50 <- cbind(m20.05, m30.05, m50.05, m100.05, m1000.05)
- 最后,我想计算上面指定的 y。但这是我完全迷失的地方。请看下面我迄今为止的最佳尝试。
y = (mtheo-m0)/(m1-m0),其中当 m1 = m0 时 y = y。 mtheo 是一个常数(例如 0.50),m1 是 tbl 的第 1 列中的值,m0 是 tbl.50 的第 1 列中的值。
ycalc <- function(mtheo, m1, m0) {
ifelse(m1>=m0) {
y = (mteo-m0)/(m1-m0)
} ifelse(m1<m0) {
y=0
} returnValue(y)
}
【问题讨论】:
-
请注意,您在步骤 1 中的行不会创建 t 实现。第一个参数是实现的数量。 IE。
mx20 <- as.data.frame(rt(10000,20,19)) -
@SteveM 我希望这条线能给我来自
m=0、sd=1的 t 分布的值,这些值来自n=20的样本。replicate函数,因为我想要从指定的 t 分布中抽取 10,000 个样本。有错吗?
标签: r function if-statement