如果声明与嵌套子集功能
问题描述:
我想做一个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的数据帧。 什么是正确的命令来做到这一点? 在此先感谢您的帮助。
答
这工作:
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,]}
使用'if'和'else'。这不是'ifelse'的用例。 – Roland