![](/img/trans.png)
[英]how to assign one of two values in R based on conditions and number of occurrences
[英]randomly assign values to two matrix based on conditions in R
我有两个矩阵:old1和gl1,我想将两个矩阵的值赋给另外两个新矩阵。 我使用的方法是:1)求和两个矩阵; 2)使用样本函数随机分配值; 3)将大矩阵分成两个新矩阵。 以下是代码:
library(ms.sev)
### old Global MSSS matrix
data(oldMsss)
old <- data.matrix(oldMsss)
old1 <- old[-1,-1]
## use the global MSSS
data(globalMsss)
gl <- data.matrix(globalMsss)
gl1 <- gl[,-1]
## combine
tc <- rbind(gl1,old1)
set.seed(1)
n.permutations = 5
sum.table = rep(1,n.permutations)
for(j in 1:n.permutations) {
print(j)
t1 <- matrix(sample(tc),nrow=60)
tf <- t1[1:30,]
tf1 <- t1[31:60,]
sum.table[j] <- sum(tf1-tf)
}
通过详细检查矩阵,我注意到对于old1和gl1,从EDSS.0.0到EDSS.9.5,该值应该增加(例如,对于gl1从0.91到10),对于y,该值应该减小(例如,gl1从0.91到0.07)。
但是,我上面的方法是不正确的,因为在分配值时没有考虑相关性。 任何想法如何将值分配给新矩阵但遵循相似的模式?
非常感谢...
如果您假设数据是多元高斯的,则可以
sample_similar_patern <- function(mat) {
MASS::mvrnorm(n = nrow(mat), mu = colMeans(mat), Sigma = cov(mat))
}
for(j in 1:n.permutations) {
print(j)
tf <- sample_similar_patern(gl1)
tf1 <- sample_similar_patern(old1)
sum.table[j] <- sum(tf1-tf)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.