首页 > 解决方案 > 使用 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 列只显示两个过滤器的特定记录。

标签: r

解决方案


像这样的东西?

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])
  }
}

推荐阅读