if语句具有嵌套子集函数

时间:2016-09-22 12:20:42

标签: r list if-statement dataframe subset

我正在尝试使用子集函数执行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

我写了一个像这样的if语句:

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

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

2 个答案:

答案 0 :(得分:0)

这有效:

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

答案 1 :(得分:0)

使用if后跟else语句进行数据子集化

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