我正在尝试使用子集函数执行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的数据帧。 这样做的正确命令是什么? 在此先感谢您的帮助。
答案 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,]}