如果声明与嵌套子集功能

如果声明与嵌套子集功能

问题描述:

我想做一个if语句与其中的子集功能。 我有一个数据帧DAT1,例如像这样:如果声明与嵌套子集功能

 Unit Cost Date 
    1  40 Sep 
    1  50 Dec 
    2  55 Sep 
    2  30 Oct 

,并根据其行nrow(DAT1)我要子集的其他数据框(DAT2)

 unit model sales 
     1  AAA 100 
     1  BBB 110 
     1  CCC 130 
     4  ZZZ 120 
     5  YYY 128 

我写了一个ifstatement像这样的:

 Sales <- ifelse(nrow(dat1)>=30, 
      dat2[which(dat2$unit==1 & dat2$model=="AAA"),], 
      dat2[which(dat2$unit==1),]) 

所以,如果我想在2个维度DAT2的,否则只是其中的一个应用子集nrow> 30。 但是这给了我一个只有第一列的列表,而不是包含所有3列dat2的数据帧。 什么是正确的命令来做到这一点? 在此先感谢您的帮助。

+1

使用'if'和'else'。这不是'ifelse'的用例。 – Roland

这工作:

Sales <- dat2[which(dat2$unit==1),] # default 
if (nrow(dat1)>=30) { 
    Sales <-dat2[which(dat2$unit==1 & dat2$model=="AAA"),] 
} 

使用,如果接着else语句的数据子集

if(nrow(dat1)>=30){ 
Sales <- dat2[dat2$unit==1 & dat2$model=="AAA",] 
}else{ 
Sales <- dat2[dat2$unit==1,]}