r - R中自定义子集数据的多重绘图
问题描述
对于以下数据集,我可以为每个 ID 创建图。有六个 ID,每个重复 4 次。
data=data.frame(ID=rep(1:6,each=4), y.value=c(1:24), x.value=seq(0,11.5, by=0.5))
setwd("C:/Users/mnudd/Desktop")
pdf(file = "myplot.pdf")
for( id.no in 1:6){
plot(data$y.value[data$ID==id.no]~data$x.value[data$ID== id.no],xlim=c(0,12),ylim=c(0,25),type="l",col="black",
xlab="time", ylab= "",main = paste("ID number", id.no), data=data)
points(data$y.value[data$ID==id.no]~data$x.value[data$ID==id.no])
}
dev.off()
现在我想为以下子集 data1 创建相同的图,
data1=data[data$ID %in% c(1,3,4),]
setwd("C:/Users/mnudd/Desktop")
pdf(file = "myplot1.pdf")
for( id.no in 1:length(unique(data1$ID))){
plot(data1$y.value[data1$ID==id.no]~data1$x.value[data1$ID== id.no],xlim=c(0,12),ylim=c(0,25),type="l",col="black",
xlab="time", ylab= "",main = paste("ID number", id.no), data=data)
points(data1$y.value[data1$ID==id.no]~data1$x.value[data1$ID==id.no])
}
dev.off()
从上面的代码中,我期望 pdf 文件中有三个图,每个图标题应该对应于第一个图标题应该是 ID 号 1、ID 号 3 和 ID 号 4 的 ID 号。
不幸的是,子集数据的循环不起作用。如果子集很大,是否有任何通用循环或函数?
感谢您的帮助。
解决方案
考虑by
(面向对象的包装器tapply
),它本质上是应用系列版本,用于循环遍历unique
列中值的数据集:
# FULL DATA
output <- by(data, data$ID, function(sub) {
plot(sub$y.value ~ sub$x.value, xlim=c(0,12), ylim=c(0,25), type="l", col="black",
xlab="time", ylab= "", main = paste("ID number", sub$ID[[1]]))
points(sub$y.value ~ sub$x.value)
})
# SUBSET DATA
data1 <- data[data$ID %in% c(1,3,4),]
output <- by(data1, data1$ID, function(sub) {
plot(sub$y.value ~ sub$x.value, xlim=c(0,12), ylim=c(0,25), type="l", col="black",
xlab="time", ylab= "", main = paste("ID number", sub$ID[[1]]))
points(sub$y.value ~ sub$x.value)
})
有一个功能:
proc_plot <- function(sub) {
plot(sub$y.value ~ sub$x.value, xlim=c(0,12), ylim=c(0,25), type="l", col="black",
xlab="time", ylab= "", main = paste("ID number", sub$ID[[1]]))
points(sub$y.value ~ sub$x.value)
}
# FULL DATA
output <- by(data, data$ID, proc_plot)
# SUBSET DATA
data1 <- data[data$ID %in% c(1,3,4),]
output <- by(data1, data1$ID, proc_plot)
推荐阅读
- ldap - 当基本 DN 的最低元素只是组 CN 时,LDAP 搜索过滤器字符串和基本 DN 语法组合以获取匹配“sAMAccountName”的用户?
- javascript - 如何在 vue.js 中提示自动完成
- flask - 与不同端口共享烧瓶会话
- python - 与 python 共享库
- git - 热门查看开发人员/分支或分支/开发人员的 git 提交(表视图中的 git 历史记录)
- networking - Moya Networking 中的 URL 任务优先级
- javascript - 使用 sharedb 和 json0-ot-type 向 JSON-Object 添加键(路径)
- charts - 我的 amchart 图表上有一个偏移量(带光标的 XY 图表,并在一个上缩放 3 个图表)
- python - 使用 Python 在 tkinter 中创建分层复选框树视图
- python - 如何在同一 html 页面部分明智地显示不同的 Django 视图,而不是不同的 html