r-计算成对样本中的列组数
我基本上得到了一个配对样本,比如:r-计算成对样本中的列组数,r,testing,sign,rank,R,Testing,Sign,Rank,我基本上得到了一个配对样本,比如: X = c(14, 5, 2, 8 , 9, 10) Y = c(7, 3, 4, 13, 11, 12) 如果我对两个样本进行排序和配对,比如说Z,我可以使用什么函数来记录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) 在本例中,如何计算尺寸为1、2和1的3个X梯段的数量 我已经尝试了rle()函数,但我不知道如何返回
X = c(14, 5, 2, 8 , 9, 10)
Y = c(7, 3, 4, 13, 11, 12)
如果我对两个样本进行排序和配对,比如说Z,我可以使用什么函数来记录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)
在本例中,如何计算尺寸为1、2和1的3个X梯段的数量
我已经尝试了rle()函数,但我不知道如何返回不同的X和Y来获得
Z
中每个值的运行次数,您可以使用rle()
,首先通过查找Z
的哪些值在X或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])
在哪里 因此,在
TRUE/FALSE
向量上使用rle
可以得到每个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
因此,我们可以分别获取长度
和值
组件,并将长度
子集,其中值==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
数据
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)
X要获得Z
中每个值的运行次数,您可以使用rle()
,首先通过查找Z
中哪些值在X或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])
在哪里
因此,在TRUE/FALSE
向量上使用rle
可以得到每个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
因此,我们可以分别获取长度
和值
组件,并将长度
子集,其中值==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
数据
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)
X您的Z=(X,Y,Y,…)
与您的Z=c(2,3,4…)不匹配。它应该是Z=(X,Y,Y,Y,X,X,X,Y,Y)
5在Z中缺失。另外,您希望的输出是什么<代码>表格(rle(Z))
colSums(table(rle(Z2))
?rle(Z%in%X)$length[rle(Z%in%X)$values]
这个问题很有趣,但您的示例仍然不符合您的要求。X/Y中的12个值在Z中变为10,然后在Z中变为11;Z中缺少5和14,并且您的预期结果与Z不匹配(1/2/1而不是1/3/1)。您的Z=(X,Y,Y…)
与Z=c(2,3,4…)不匹配。它应该是Z=(X,Y,Y,Y,X,X,X,Y,Y)
5在Z中缺失。另外,您希望的输出是什么<代码>表格(rle(Z))
colSums(table(rle(Z2))
?rle(Z%in%X)$length[rle(Z%in%X)$values]
这个问题很有趣,但您的示例仍然不符合您的要求。X/Y中的12个值在Z中变为10,然后在Z中变为11;Z中缺少5和14,并且您的预期结果与Z不匹配(1/2/1而不是1/3/1)。或者只是rle(Z)$length[rle(Z)$value='X']
和rle(Z)$length[rle(Z)$value='Y']
,不?@alistaire我假设他的Z
就是Z哦,我明白了。我使用了Z2如果您想避免计算两次运行长度(不必要),您可以使用和(rle(Z%in%X),length[value])
@docendodiscimus-是的,这是一个很好的补充。我会把它包括在我的回答中。谢谢。或者只是rle(Z)$length[rle(Z)$values='X']
和rle(Z)$length[rle(Z)$values='Y']
,不?@alistaire我假设他的Z
就是Z哦,我明白了。我使用了Z2如果您想避免计算两次运行长度(不必要),您可以使用和(rle(Z%in%X),length[value])
@docendodiscimus-是的,这是一个很好的补充。我会把它包括在我的回答中。谢谢