我想計算的總收入在一間店鋪,每30分鐘,提取值
我有一個數據集,如:
hour minute price
0 1 12,5
0 1 10
0 2 15
0 3 15
我試圖實現像共計這個:
[rows,cols,vals] = find(0 < data(:,2) & data(:,2) < 31);
但不能得到我想要的。
我想計算的總收入在一間店鋪,每30分鐘,提取值
我有一個數據集,如:
hour minute price
0 1 12,5
0 1 10
0 2 15
0 3 15
我試圖實現像共計這個:
[rows,cols,vals] = find(0 < data(:,2) & data(:,2) < 31);
但不能得到我想要的。
你應該使用邏輯索引,以獲得30分鐘的範圍內,價格:
data(0 < data(:,2) & data(:,2) < 31, 3)
爲什麼你所期望的發現沒有做?
find
作品下列算式0 < data(:,2) & data(:,2) < 31
,即[1 1 1 1].'
的結果,它不知道原始矩陣data
什麼。因此,第二個和第三個參數在這種情況下是無用的。他們將是有用的獲得nonzero elements in a matrix。
爲A(低效率)的替代邏輯索引,你可以得到相同的結果如下:
data(find(0 < data(:,2) & data(:,2) < 31), 3)
選擇特定的小時
目前,您所選擇的價格每小時的上半場。至00:00和00:30之間進行選擇,例如價格,你可以使用以下命令:
data(data(:,1) == 0 && 0 < data(:,2) & data(:,2) < 31, 3)
我找到了解決方案的快速回答
data(:,2) =((data(:,2) ./ 30) + 1);
data(:,2)= floor(data(:,2));
changes = find(diff(data(:,2)))+1;
for i=1:1:(length(changes) -1)
A(i)=sum(data(changes(i):changes(i+1),3))
end
感謝,但我不工作,因爲它返回第2小時,第3小時,第4小時......等等。我想在00:00 - 00:30,00:30-1:00,1:00 - 1:30之間添加數值.... –
當然,您應該在第一列添加附加條件。 – m7913d