R 按行查找连续值

R 按行查找连续值,r,R,有没有一种聪明的方法来确定是否有连续的“是”的行 1/01 1/02 1/03 1/04 UserA Yes Yes Yes Yes UserB No Yes No No UserC Yes No Yes Yes UserD Yes No Yes No UserA将有4个连续的“是” UserB将具有0 UserC将有两个连续的Yes UserD将有0个连续的Yes,我假设您有一个data.framed: d <- stru

有没有一种聪明的方法来确定是否有连续的“是”的行

        1/01 1/02 1/03 1/04
UserA   Yes  Yes  Yes  Yes
UserB   No   Yes  No   No
UserC   Yes  No   Yes  Yes
UserD   Yes  No   Yes  No
UserA将有4个连续的“是”

UserB将具有0

UserC将有两个连续的Yes


UserD将有0个连续的Yes,我假设您有一个data.frame
d

d <- structure(list(X1.01 = c("Yes", "No", "Yes", "Yes"), X1.02 = c("Yes", 
"Yes", "No", "No"), X1.03 = c("Yes", "No", "Yes", "Yes"), X1.04 = c("Yes", 
"No", "Yes", "No")), .Names = c("X1.01", "X1.02", "X1.03", "X1.04"
), class = "data.frame", row.names = c("UserA", "UserB", "UserC", 
"UserD"))
这里的关键功能是
rle
,它查找所有连续序列。我们只选择与“是”对应的值(
z$length[z$values=='Yes'
)并返回最大值。最后一步是设置为将1转换为零:

result[result==1] <- 0

#UserA UserB UserC UserD 
#    4     0     2     0 

result[result==1]我假设您有一个data.frame
d

d <- structure(list(X1.01 = c("Yes", "No", "Yes", "Yes"), X1.02 = c("Yes", 
"Yes", "No", "No"), X1.03 = c("Yes", "No", "Yes", "Yes"), X1.04 = c("Yes", 
"No", "Yes", "No")), .Names = c("X1.01", "X1.02", "X1.03", "X1.04"
), class = "data.frame", row.names = c("UserA", "UserB", "UserC", 
"UserD"))
这里的关键函数是
rle
,它查找所有连续序列。我们只选择与“是”对应的序列(
z$length[z$values=='Yes'
)并返回最大值。最后一步是设置将1转换为零:

result[result==1] <- 0

#UserA UserB UserC UserD 
#    4     0     2     0 

<代码>结果[结果=1 ] < P>这是一个类似的方法,使用<代码>应用< /COD>和<代码> RLE < /代码>(我将发布这篇文章,因为已经在发布中)

应用(df,1,函数(x){

Timp

这里有一个类似的方法,使用<代码>应用< /COD>和<代码> RLE < /代码>(我将发布这篇文章,因为已经在发布中)

应用(df,1,函数(x){

temp您的预期输出听起来像是要按行计算连续“是”值的数量。另外,您的数据结构是什么?data.frame?矩阵?值是字符?因子?我使用的是data.frame,值是因子。您的预期输出听起来像是要计算连续“是”的数量行的值。另外,您的数据结构是什么?data.frame?矩阵?值是字符?因子?我使用的是data.frame,值是因子。