gpt4 book ai didi

r - 展开计数矩阵

转载 作者:行者123 更新时间:2023-12-01 23:28:34 25 4
gpt4 key购买 nike

假设我有这个矩阵:

set.seed(10)
mat <- matrix(sample(0:3, 25, TRUE), ncol = 5)
rownames(mat) <- month.abb[1:5]
colnames(mat) <- state.name[1:5]

mat

## Alabama Alaska Arizona Arkansas California
## Jan 2 0 2 1 3
## Feb 1 1 2 0 2
## Mar 1 1 0 1 3
## Apr 2 2 2 1 1
## May 0 1 1 3 1

我正在寻找一种有效的(欢迎非基本解决方案)方法来将每个观察/行扩展n次(n由该行中的最大值决定)并填写1或0,如下所示(我是不确定这种技术是否有名称,但如果有人对此扩展有评论,我很想知道它叫什么;使谷歌搜索更容易)。

##     Alabama Alaska Arizona Arkansas California
## Jan 1 0 1 1 1
## Jan 1 0 1 0 1
## Jan 0 0 0 0 1
## Feb 1 1 1 0 1
## Feb 0 0 1 0 1
## Mar 1 1 0 1 1
## Mar 0 0 0 0 1
## Mar 0 0 0 0 1
## Apr 1 1 1 1 1
## Apr 1 1 1 0 0
## May 0 1 1 1 1
## May 0 0 0 1 0
## May 0 0 0 1 0

最佳答案

这也......不知怎的似乎是有效的:

maxs = mat[cbind(seq_len(nrow(mat)), max.col(mat, "first"))]
(mat[rep(seq_len(nrow(mat)), maxs), ] >= sequence(maxs)) + 0L
# Alabama Alaska Arizona Arkansas California
#Jan 1 0 1 1 1
#Jan 1 0 1 0 1
#Jan 0 0 0 0 1
#Feb 1 1 1 0 1
#Feb 0 0 1 0 1
#Mar 1 1 0 1 1
#Mar 0 0 0 0 1
#Mar 0 0 0 0 1
#Apr 1 1 1 1 1
#Apr 1 1 1 0 0
#May 0 1 1 1 1
#May 0 0 0 1 0
#May 0 0 0 1 0

关于r - 展开计数矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com