r - 计算配对样本中的排名数

时间:2016-05-03 02:30:58

标签: r testing sign rank

我基本上给了一个配对样本说:

Z = c(2, 3, 4, 7, 8, 9, 10, 11, 12, 13)

如果我对这两个样本进行排序和配对说Z哪个函数可以用来记录Z中的等级数?

Z = (X, Y, Y, Y, X, X, X, Y, Y, Y, X)

所以Z现在是

string

我如何计算X-run的数量,在这种情况下是3的大小1,2和1 我已经尝试过rle()函数,但我不明白如何返回不同的X和Y的

1 个答案:

答案 0 :(得分:3)

要获取Z中每个值的投放次数,您可以使用rle(),首先查找ZX 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 discimus所指出的可以写成

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

因此,我们可以单独采用lenghtsvalues个组件,并将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)