从本质上说,我得到了一个配对样本,比如:
X = c(14, 5, 2, 8 , 9, 10)
Y = c(7, 3, 4, 13, 11, 12)如果我对这两个样本进行排序和配对,可以使用什么函数来记录Z中的级别数?
Z = c(2, 3, 4, 7, 8, 9, 10, 11, 12, 13)所以Z现在
Z = (X, Y, Y, Y, X, X, X, Y, Y, Y, X)如何计算X-运行的次数,在本例中是3种大小的1、2和1,我尝试过rle()函数,但我不知道如何返回不同的X和Y
发布于 2016-05-03 02:58:13
要获取Z中每个值的运行次数,您可以使用rle(),首先通过查找Z的哪些值在X or Y中,然后将其再次添加到属于TRUE的值上。
rle(Z %in% X)$lengths[rle(Z %in% X)$values]
#[1] 1 3
rle(Z %in% Y)$lengths[rle(Z %in% Y)$values]
#[1] 3 3正如@docendo弟子所指出的,它可以写成
with(rle(Z %in% X), lengths[values])
with(rle(Z %in% Y), lengths[values])哪里
Z %in% X ## gives
TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE因此,在rle向量上使用TRUE/FALSE给出我们的运行每个TRUE/FALSE的
rle(Z %in% X) ## gives
Run Length Encoding
lengths: int [1:4] 1 3 3 3
values : logi [1:4] TRUE FALSE TRUE FALSE因此,我们可以分别使用lenghts和values组件,并将lenghts中的values == TRUE子集
数据
X <- c(14, 5, 2, 8 , 9, 10)
Y <- c(7, 3, 4, 13, 11, 12)
Z <- c(2, 3, 4, 7, 8, 9, 10, 11, 12, 13)https://stackoverflow.com/questions/36994642
复制相似问题