我正在尋找一種更有效的方式來創建子集R.使用數據集where rows = products和columns = time,我想查找那些在第1周開始銷售產品的行(產品),然後將其作爲子集。然後對第2周做同樣的事情。條件子集的基礎上求和相鄰列在R(plyr包?)
set.seed(4); d <- data.frame(
product = seq(1:10),
week1= sample(0:1,10,replace=TRUE),
week2= sample(0:3,10,replace=TRUE),
week3=sample(0:5,10,replace=TRUE),
week4= sample(0:5,10,replace=TRUE),speed=sample(100:200,10),quality=sample(20:50,10)
)
完整的數據幀是d。所以我需要知道2件事情才能找到所有的子集: 1)以前的所有銷售週期都是== 0,然後是 2)本週的銷售額不是零。
沒有子集應該重疊,因爲他們在第一次進入市場時將產品分組。
我發現一個窮人的方式來做到這一點,但我知道必須有更好的方法!
低效的方式:
subset3<-d[d$week3 >0 & d$week2==0 & d$week1==0 ,]
subset4<-d[d$week4 >0 & d$week3 ==0 & d$week2==0 & d$week1==0,]
會更有效,但仍差
subset3<-d[d$week3 >0 & d$week2+d$week1==0 ,]
subset4<-d[d$week4 >0 & d$week3 + d$week2 + d$week1==0,]
這種感覺就像我應該可以做這樣的事情,但它不工作:
subset4<-d[d$week4 >0 & sum(d$week1:d$week3) ==0, ]
我不認爲ddply或申請會在這裏工作,但也許我錯了? 我需要的結果是d的子集,所有列,就像這樣:
subset3 =
product week1 week2 week3 week4 speed quality
2 0 0 5 1 124 42
3 0 0 3 5 155 45
什麼?那是什麼編程語言?你在想什麼?請閱讀常見問題解答:http://stackoverflow.com/faq。就目前而言,我非常懷疑我們能夠有效地幫助你。 –
是的,自從用戶在34分鐘前將其編輯到問題中後,我就知道了。 Fwiw我仍然認爲這個問題需要重新表述。 –
對不起,我正在嘗試閱讀常見問題解答並使其更易於理解。我現在發佈了可以幫助的可重複數據。我感謝你的耐心! – user2205744