繁体   English   中英

在R中,为每个参与者绘制多少个时间点都有可行数据的直方图

[英]In R, plot a histogram of how many time-points have viable data for each participant

我有一个很大的数据框,我希望能够为所有参与者绘制可行会话数的直方图-用NA以外的任何值表示,以便确定他们是否完成了足够的会话数包括在分析中,以及大多数人得分的会话数是否有明确的分界点。 每个参加者应完成10个研究阶段,但有些人缺少会议,如NA所示。

真实的数据框很大,并且包含我无法显示的参与者数据,但是我在这里重新创建了一个较小的样本版本,其中包含一些重要列,包括参与者ID,他们在每次会话中获得的分数以及会话号。

样本数据框的图像

重新创建数据框的代码:

dat <- cbind(c(rep(1:3,10)), c(rep(c(12, 32, NA, 44, 45, NA, NA, 8, 54, NA, NA, 12, 13, 14, NA),2)), c(rep(1,3), rep(2,3), rep(3,3), rep(4,3), rep(5,3), rep(6,3), rep(7,3), rep(8,3), rep(9,3), rep(10,3)))
colnames(dat) <- c("ID", "score", "session.num")

预先感谢您的帮助。 如果我的问题需要澄清,请告诉我。

如果我正确理解了您的问题,那么您希望获得参与者已完成多少会话的直方图。 为此,您首先需要按ID汇总数据,以查看每个参与者完成了多少可行的会话,然后绘制直方图。

dat <- as.data.frame(dat)

dat.agg <- with(dat[!is.na(dat$score),], # Filter out sessions with NA score 
                aggregate(session.num, by = list(ID), # Aggregate session by ID
                          FUN = function(x) length(unique(x))))

names(dat.agg) <- c("ID", "viable")
dat.agg
#  ID viable
#  1      6
#  2      8
#  3      4

hist(dat.agg$viable)
hist(dat.agg[dat.agg$viable > 10, "viable"]) # If you only 
                                            # care about those with 10 sessions

library(ggplot2) # More options with ggplot
ggplot(dat.agg, aes(viable)) + geom_histogram(binwidth = 1) 

这是我在实验室同事的帮助下最终做的事情:

dat_hist <-dat%>%group_by(ID)%>%summary(ViableN = sum(!is.na(score)))#获取可行运行次数

qplot(dat_hist $ ViableN,geom =“ histogram”,xlab =“可行的运行”,ylab =“计数”,main =“可行的运行次数的频率”,binwidth = .5)table(dat_hist $ ViableN)#直方图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM