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.framed
:
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,值是因子。