我正在R中运行链式仿真,这需要我根据前一个参与者的得分随机采样数据的子集(因此,例如,如果Pt1得分为4,我需要从中随机生成一个Pt2得分得分为4的小组,依此类推)。
我不确定执行此操作的最佳方法是否是将数据文件拆分为子集并从那里获取随机数据(因此,“如果Pt1得分为4,则从数据帧/字符'4'中生成随机样本”,或者从整个数据框中生成数据会更容易。
在这里,我在数据帧pt.z
中创建了一个新列,当aa2
为2时,该列从名为pt.z$score
的字符串中随机生成了一个样本。但是,仅当pt.z = 2的第一行,它将同一样本应用于整个列,而不是为每一行提供不同的随机样本。
某些数据
chain <- c("1", "2", "3", "4", "5")
score <- c("2", "1", "2", "3", "0")
pt.a <- data.frame(chain, score)
aa0 <- c("1","3","5","7","3")
aa1 <- c("2","6","4","8","2")
aa2 <- c("11","33","55","77","33")
aa3 <- c("0","9","9","0","9")
aa0(等)是模型得分为0时获得的得分列表,因此,如果Pt1得分为0(即'pt.z $ score = 0',则p_1应该显示随机选择)从aa0列表中
for (x in pt.z$chain) {
if (pt.z$score[x] == 2) {
pt.z$p_1 <- sample(aa2, size = no_of_simulations, replace = TRUE)
}}
我需要能够从数据框或对应于Pt1分数的字符串中为每个Pt1分数随机生成一个Pt2分数,并且我还需要能够对任意数量的参与者进行操作(因此, Pt1的Pt2得分,Pt2的Pt 3得分,依此类推)。
有什么办法可以做到这一点?任何帮助将不胜感激!