如果前一个元素在R中也是TRUE,那么如何计算数据帧中TRUE语句的数量?
我有以下虚拟数据:如果前一个元素在R中也是TRUE,那么如何计算数据帧中TRUE语句的数量?,r,conditional-statements,counting,R,Conditional Statements,Counting,我有以下虚拟数据: data <- data.frame(c("FALSE","FALSE","TRUE","TRUE","TRUE","FALSE","FALSE","TRUE","FALSE")) data在向量上写一个简单的循环来计算对的类型怎么样 x在向量上写一个简单的循环来计算对的类型怎么样 x您可以
data <- data.frame(c("FALSE","FALSE","TRUE","TRUE","TRUE","FALSE","FALSE","TRUE","FALSE"))
data在向量上写一个简单的循环来计算对的类型怎么样
x在向量上写一个简单的循环来计算对的类型怎么样
x您可以使用table
将值与滞后值进行比较:
表格(先前=数据[[1]][-1],当前=数据[[1]][-nrow(数据)])
#>当前
#>以前的假真
#>错误2
#>真实2 2
或者,如果你想变得花哨:
as.data.frame(表(先前=数据[[1]][-1],当前=数据[[1]][-nrow(数据)])
#>以前的当前值
#>1假2假
#>2对错2
#>3假与真2
#>4正确的2
您可以使用表
将值与滞后值进行比较:
表格(先前=数据[[1]][-1],当前=数据[[1]][-nrow(数据)])
#>当前
#>以前的假真
#>错误2
#>真实2 2
或者,如果你想变得花哨:
as.data.frame(表(先前=数据[[1]][-1],当前=数据[[1]][-nrow(数据)])
#>以前的当前值
#>1假2假
#>2对错2
#>3假与真2
#>4正确的2
根据数据的大小,循环方法可能会变慢。这是一种dplyr
方法。可能没有使用table()
那么快
数据%
分组依据(变量、滞后)%>%
过滤器(完整。案例(滞后))%>%
汇总(计数=n())%>%
变异(标签=粘贴(“n_908;”,as.numeric(var),as.numeric(lag),sep=”“)%>%
选择(标签、计数)
根据数据的大小,循环方法可能会变慢。这是一种dplyr
方法。可能没有使用table()
那么快
数据%
分组依据(变量、滞后)%>%
过滤器(完整。案例(滞后))%>%
汇总(计数=n())%>%
变异(标签=粘贴(“n_908;”,as.numeric(var),as.numeric(lag),sep=”“)%>%
选择(标签、计数)
非常感谢,这个循环非常有用!我用更多的数据(大约100个)进行了测试,并手动进行了检查。谢谢!很高兴这有帮助!在这篇文章中有很多好的答案。请选择您最喜欢的并正式“接受”解决方案。非常感谢,此循环非常有用!我用更多的数据(大约100个)进行了测试,并手动进行了检查。谢谢!很高兴这有帮助!在这篇文章中有很多好的答案。请选择您最喜欢的并正式“接受”解决方案。非常感谢您的支持,它还能够输出正确的数字!也非常感谢你的这一个,它还设法输出正确的数字,我正在寻找!还感谢这一个,不幸的是,我相信这里的代码输出的不是其他两个示例。它统计的真实/真实观察值比实际存在的多,而真实/虚假和虚假/真实值较少。这可能是因为将两个向量相加的滞后方法没有考虑到达到TRUE状态时的顺序/方式。@Erich it为每个向量输出2-如值列所示。这正是您在预期输出中显示的内容。你不需要一个循环来解决这个问题。也感谢这一个,不幸的是,我相信这里的代码输出的不是其他两个示例。它统计的真实/真实观察值比实际存在的多,而真实/虚假和虚假/真实值较少。这可能是因为将两个向量相加的滞后方法没有考虑到达到TRUE状态时的顺序/方式。@Erich it为每个向量输出2-如值列所示。这正是您在预期输出中显示的内容。你不需要一个循环来解决这个问题。
data <- data.frame( var = c("FALSE", "FALSE", "TRUE", "TRUE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE"))
data$var <- as.logical(data$var)
data %>%
mutate(lag = lag(var)) %>%
group_by(var, lag) %>%
filter(complete.cases(lag)) %>%
summarise(count = n()) %>%
mutate(label = paste("n_", as.numeric(var), as.numeric(lag), sep ="")) %>%
select(label, count)