r - 使用 R 循环使用多列过滤器
问题描述
`
PRODUCT <- c("A","A","A","D","D","D","D","C","C","C")
x_1 <- c("A1", "A1","A1", "B10", "B10", "B10","B10", "C100", "C100", "C100")
Date <- c('2013-01-01','2013-01-02','2013-01-03','2013-01-04','2013-01-05','2013-01-06', '2013-01-07','2013-01-08','2013-01-09','2013-01-10')
TEMP <- c(89,98,76,87,65,98,47,33,28,10)
df <- data.frame(Date, TEMP, PRODUCT,x_1)
for (i in unique(df$PRODUCT)) {
plot(df[df$PRODUCT==i, "Date"], df[df$PRODUCT==i, "TEMP"],
xlab = "Date", ylab = "TEMP", # base the axes on full data range
main = paste("Plot of", i)) # Give each a title
}
我有如上所示的数据框。我应用了这个循环,现在只返回产品明智的唯一值(例如过滤产品明智),我想用多个类别列进行过滤,不仅针对产品列(例如产品、分支和区域明智的过滤器),任何人都可以帮助我如何通过在 R 中使用循环来做到这一点?此代码有效,但仅适用于产品列现在我想过滤多个列。像 X 轴包含日期和 Y 轴包含 TEMP 列现在我想过滤产品和 x_1 列只显示两个过滤器的特定记录。
解决方案
像这样的东西?
cmbs <- expand.grid(unique(PRODUCT), unique(x_1)) # Creates unique combinations
for (i in 1:n){
x <- df[df$PRODUCT==cmbs[i,1] & df$x_1==cmbs[i,2], "Date"]
y <- df[df$PRODUCT==cmbs[i,1] & df$x_1==cmbs[i,2], "TEMP"]
if(length(x)!=0 & length(y)!=0) {
plot(x, y,
xlab = "Date", ylab = "TEMP",
main = paste("Plot of", cmbs[i,1], "and", cmbs[i,2])
}
}
推荐阅读
- sql - 你能加入两个表并得到一个包含 obj 列表(来自第二个表)的 obj(来自第一个表)
- asp.net-mvc-4 - Active Directory 和 IIS 服务器不在同一个域时怎么办?
- java - JProgressBar 更新和线程调度
- python - 如何修改双端队列列表?
- r - 为多个参数的所有排列泛化 lapply/map
- spring-data-graph - 如何使用 DatagramPacket 和 DatagramSocket 类创建服务器-客户端应用程序?
- c# - 如何在 Asp.Net Core 2.2 运行时禁用/启用身份验证?
- c# - OrderedTest 返回 TestMethod 以外的另一个目录
- java - 用于 REST 过滤器/搜索参数的 Java 正则表达式模式?
- javascript - TypeError:无法调用 SuiteScript 中未定义的方法“拆分”