计算单元格等于文本时出现的次数
count the number of occurrences when cells equal text
我有一个矩阵,其中包含等于 "J" 或 "N" 的值。这些值出现在 3、2 或 1 的块中,并且没有值分隔。我想计算 3,2 和 1 块出现的次数。当我将 J 和 N 替换为 1 然后根据下一个函数对其进行计数时,我可以设法做到这一点。但是,你怎么能把J和N分开呢。谢谢
矩阵:
t1 t2 t3 t4 t5 t6 t7
[1,] 0 0 0 0 J J 0
[2,] 0 0 N N 0 0 N
[3,] J J J 0 0 0 0
[4,] 0 0 N N N 0 0
J
的代码(来自聊天中的某人)
n1 <- 2
n2 <- 3
res <- t(apply(Calendar, "J", FUN=function(x) {
x1 <- with(rle(x), lengths[!!values])
c(sum(x1==n1), sum(x1==n2))
}))
colnames(res) <- paste0("count", c(11, 111))
res
嗯它不会work.At最后我想要一个矩阵(根据初始矩阵)
J3 J2 J1 N3 N2 N1
1 2 0 1 1 1
编辑并请求澄清:假设这是一个日历并且 1-7 是星期几,那么这个潜在矩阵的理想答案是什么:
矩阵:
t1 t2 t3 t4 t5 t6 t7
[1,] 0 0 0 0 0 J J
[2,] J 0 N N 0 0 N
[3,] J J J 0 0 0 N
[4,] N 0 N N N 0 0
我们可以使用rle
lst1 <- lapply(c("J", "N"), function(nm) t(apply(Calendar == nm, 1,
FUN = function(x) {
x1 <- with(rle(x), lengths[values])
table(factor(x1, levels=1:3))})))
`row.names<-`(t(sapply(lst1, colSums)), c("J", "N"))
我有一个矩阵,其中包含等于 "J" 或 "N" 的值。这些值出现在 3、2 或 1 的块中,并且没有值分隔。我想计算 3,2 和 1 块出现的次数。当我将 J 和 N 替换为 1 然后根据下一个函数对其进行计数时,我可以设法做到这一点。但是,你怎么能把J和N分开呢。谢谢
矩阵:
t1 t2 t3 t4 t5 t6 t7
[1,] 0 0 0 0 J J 0
[2,] 0 0 N N 0 0 N
[3,] J J J 0 0 0 0
[4,] 0 0 N N N 0 0
J
的代码(来自聊天中的某人)n1 <- 2
n2 <- 3
res <- t(apply(Calendar, "J", FUN=function(x) {
x1 <- with(rle(x), lengths[!!values])
c(sum(x1==n1), sum(x1==n2))
}))
colnames(res) <- paste0("count", c(11, 111))
res
嗯它不会work.At最后我想要一个矩阵(根据初始矩阵)
J3 J2 J1 N3 N2 N1
1 2 0 1 1 1
编辑并请求澄清:假设这是一个日历并且 1-7 是星期几,那么这个潜在矩阵的理想答案是什么:
矩阵:
t1 t2 t3 t4 t5 t6 t7
[1,] 0 0 0 0 0 J J
[2,] J 0 N N 0 0 N
[3,] J J J 0 0 0 N
[4,] N 0 N N N 0 0
我们可以使用rle
lst1 <- lapply(c("J", "N"), function(nm) t(apply(Calendar == nm, 1,
FUN = function(x) {
x1 <- with(rle(x), lengths[values])
table(factor(x1, levels=1:3))})))
`row.names<-`(t(sapply(lst1, colSums)), c("J", "N"))