[英]replace for loop with dplyr
我想用dplyr
选项替换这个简单的 for 循环:
df <- data.frame(ID=c(rep(7,3), rep(8,3), rep(9,3)), visit= c(rep(c(0, 180, 360),3)), value = c("Poor", NA, "High", "High", NA, "High", NA, "Poor", "Poor") )
vec <- sum(!is.na(df$value)[df$visit==0])
for (i in seq(180, 360, 180)) {
tmp <- sum(!is.na(df$value)[df$visit==i])
vec <- c(vec, tmp)
}
为每个“访问” i
获取不缺少“值”的长度向量:
vec
[1] 2 1 3
一个简单的dplyr
方法是group_by
您的visit
列,然后sum
不是NA
的value
。
如果您希望使用 dataframe 而不是矢量,请忽略pull(vec)
。
library(dplyr)
df %>%
group_by(visit) %>%
summarize(vec = sum(!is.na(value))) %>%
pull(vec)
[1] 2 1 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.