美股台股投資觀測站

for迴圈加總c++、python總和、python加總在PTT/mobile01評價與討論,在ptt社群跟網路上大家這樣說

for迴圈加總c++在[問題] 將資料時間按月份計算(迴圈)- 看板R_Language

作者[問題] 將資料時間按月份計算(迴圈)
標題AndrewShi (沒有妳的我)
時間2018-11-13 17:47:04 UTC


[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)

[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)

[問題敘述]:
這筆資料為2010年全球的降雨資料,資料可從這裡取得:http://0rz.tw/JI056,資料的時
間格式為24小時一筆,總共365筆,現在我想先把時間的格式轉成年月日(如:2010-01-01)
,再判斷日期的月份來做計算(迴圈),之前有大大解答我是用apply的做法,我也知道在
R裡用apply會比用迴圈來的有效率,不過我想用自己理解的邏輯來寫迴圈做練習,而下面
我所寫的迴圈我知道其中一個問題是time1的維度還是365(雖然數字變成1~12),我不知道
該怎麼把time1(按月份分好的365天)放到一個12格的矩陣裡,所以想請教各位大大下面的
迴圈該如何修改才正確呢??謝謝。

[程式範例]:
rm(list=ls())
library(ncdf4)
library(data.table)

TRMM_data <- "C:\\Users\\TOM\\Desktop\\R(資料庫)\\TRMM資料\\trmm_2010.nc"
obs <- nc_open(TRMM_data)
print(obs)

lon <- ncvar_get(obs,"lon")
lat <- ncvar_get(obs,"lat")
time <- ncvar_get(obs,"time")
precip <- ncvar_get(obs,"r")
nc_close(obs)

for(tmonth in c(1:12)){
for(time1 in c(1:365)){
time <- as.Date(time / 24, format = "%Y-%m-%d", origin = "2010-01-01")
time1 <- strftime(time,format="%Y-%m-%d)
tmonth <- month(time1)
if(tmonth==time1){
precip1 <- precip[,,tmonth]
precip2 <- array(NA_real_,dim=c(1440,400,12))
for(i in c(1:1440)){
for(j in c(1:400)){
precip2[i,j,1:12] <- mean(precip1[i,j,tmonth])
}
}
}
}
}

library(sp)
library(RColorBrewer)
image(lon,lat,precip2[,,1],col=rev(brewer.pal(10,"RdBu")))

[環境敘述]:

[關鍵字]:
時間處理 迴圈

--
抱歉,我可能沒有把想做的事說清楚,我的確是也想把天數和月份做連結,但上面的程式
碼我是想讓它當time1=1,time=1進來迴圈之後,判斷是幾月份的降雨值,如果判斷是1月
,那麼就會等於time1的1,然後就會把判斷為1月份的降雨值做相加。
當time=32的時候,它會判斷為2月(的降雨值),此時time=32就不會等於time1的1,所以
第31個值後面所有的值就都不符合if判斷式,最後跳到time1=2,time=1繼續跑,time=32
才會開始符合條件,之後便是相加2月的降雨值,以此類推,最後再把365天的降雨值放到
12格的盒子裡。

→ andrew43: 我覺得你的問題是你沒想清楚要怎麼算,而不是R的問題。11/13 19:28
→ andrew43: 要從365層分組平均成12層,你想要迴圈怎麼「走」?11/13 19:32
→ andrew43: 另你在判斷「某一天屬於哪一月」就真的不知所云...11/13 19:36
→ andrew43: a<-1:5; b<-c("A","A","B","B","B"); 先練好把a按b分組11/13 19:40
→ andrew43: 平均得到c(1.5,4)結果且不要用apply系列的寫法11/13 19:41
→ AndrewShi: 我想讓365天按照日期讓R來判斷這是幾月的資料,是一月11/13 19:45
→ AndrewShi: 就加總前31天的資料,是二月的就加總第32~59天的資料,11/13 19:45
→ AndrewShi: 最後加總成總共12個月。11/13 19:45
→ AndrewShi: 好的,我先試試看。11/13 19:45
→ andrew43: 你的算法很不方便,還要額外處理某個月是當年的第幾天11/13 20:37
→ andrew43: 當然這有額外的function可以處理。11/13 20:38
→ andrew43: 此外,如此一來,不應該會有四層for loop。11/13 20:38
→ andrew43: 我猜你把我的小問題做出來,你也就自然解決了。11/13 20:41
→ AndrewShi: andrew大可以給我一點提示嗎??我目前只想到,names(a)11/14 01:51
→ AndrewShi: <- b,我不確定這是不是把a按b分組的意思。11/14 01:51
→ andrew43: https://ideone.com/PFtOBA 參考看看11/14 08:50
→ AndrewShi: andrew大~你給我的這段程式碼是把365天按照2018年的月11/14 12:34
→ AndrewShi: 份和日數去分組,最後再從1+2+3+...365除上每個月的天11/14 12:34
→ AndrewShi: 數的意思嗎?!11/14 12:34
→ andrew43: 對,我是這樣算。 11/14 14:08
→ andrew43: 你的方法也可以,但你的code我看不出來是在做這件事。 11/14 14:10
→ andrew43: 先不要把for loop變動變數和原本存在的變數有一樣的名字 11/14 14:33
→ AndrewShi: andrew大~我稍微改了一下上面的程式碼,但還是不行, 11/14 15:52
→ AndrewShi: 我也覺得還是怪怪的,但不知道該怎麼改,tmonth有365 11/14 15:52
→ AndrewShi: 個數字(1~12),我不知道該怎麼把都是1的那31天的降雨 11/14 15:53
→ AndrewShi: 值放入同一格裡。 11/14 15:53
→ AndrewShi:

11/14 15:54
→ andrew43: tmonth <- month(time1) 和 for loop的tmonth打架 11/14 16:59
→ andrew43: 潑你個冷水,你堅持四層loop的運算量實在很浪費力氣 11/14 17:03
→ andrew43: 另外,建議先退回到我給的例子,用你自己的方法重新寫。 11/14 17:05
→ andrew43: 在重寫之前先用紙筆把program flow chart畫出來再寫 11/14 17:05
→ andrew43: flow chart中要儘可能包括所有細節 11/14 17:06
→ AndrewShi: andrew大~打架是指??我的最後2個迴圈是在做降雨值的加 11/14 23:42
→ AndrewShi: 總,能否請教andrew大我的迴圈有缺或錯哪些地方嗎??如 11/14 23:43
→ AndrewShi: 果沒有錯的很離譜,我想看自己能不能修改並完成它(畢 11/14 23:43
→ AndrewShi: 竟是用自己的邏輯寫的),至於你給我的那段程式碼,我也 11/14 23:43
→ AndrewShi: 只是勉強看的懂,但我還真的不知道也想不到要那樣寫。 11/14 23:43
→ rubythinking: 對於tmonth你一開始的設定是c(1:12),結果到迴圈裡 11/15 00:03
→ rubythinking: 面你又讓他跟著你的time1做變化,這樣第一個迴圈是 11/15 00:03
→ rubythinking: 不是可以去掉? 11/15 00:03
→ rubythinking: 其實就連你的time1都是會變動的,所以前兩個for迴圈 11/15 00:05
→ rubythinking: 根本是沒意義的吧? 11/15 00:05
→ andrew43: 因為你的code有很多詭異之處,我不能明白你的困難點在哪 11/15 00:57
→ andrew43: 所以我才建議你先簡化問題,先用例子中已知部份重寫一次 11/15 00:59
→ andrew43: 看看能不能讓我或你自覺你的關鍵問題是什麼。 11/15 01:00
→ andrew43: 至於你說你也會想不到原來可以有不同寫法,這很正常的。 11/15 01:01
→ andrew43: 不用太在意,先看懂別人的code邏輯是什麼就好。 11/15 01:02
→ AndrewShi: 好的,那我明天再來好好的想,謝謝andrew大。 11/15 01:45
→ andrew43: 先給你模仿你想法的一種解法。卡關時再開來看。 11/15 17:46
→ andrew43: https://ideone.com/kFZTlu 留意一些for loop小技巧 11/15 17:47
→ andrew43: 例如 var.N 就是常見的計數器寫法。 11/15 17:48
→ AndrewShi: 了解,非常謝謝andrew大,我的想法的確是你後面傳給我 11/22 12:31
→ AndrewShi: 的這個寫法,再看了你的程式碼之後我有想出來要怎麼寫 11/22 12:31
→ AndrewShi: 了。 11/22 12:31
→ AndrewShi: andrew大~想請問你確認一下這個迴圈概念套用在兩年或是 11/22 17:15
→ AndrewShi: 多年的資料上應該也可以吧?!就是算兩年(或多年)一月份 11/22 17:15
→ AndrewShi: 的平均降雨值 11/22 17:15
推 andrew43: 可以。分群平均時的組別有包含年和月就沒問題。 11/22 20:59

for迴圈加總c++關鍵字相關的推薦文章

for迴圈加總c++在[長知識] C語言- 新手篇章- for迴圈相加總合以及for迴圈病毒的討論與評價

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { //Loop迴圈 // for(A ;B ;C ){} // A:初始式, B:判斷式, C:運算式, ...

for迴圈加總c++在for迴圈| C++與演算法的討論與評價

為了視覺上的方便,因此要學習for迴圈。 英文加油站. for:在...(指定時間). The meeting is arranged for 9 o ' clock . 會議 ...

for迴圈加總c++在加總-- sum.js | 高等C語言的討論與評價

範例-- 加總. 使用while 迴圈. 檔案:wsum.js sum=0; i=1; while (i<=10) { sum = sum + i; console.log("i=", i, " sum=", sum); i = i + 1; }. 執行結果:

for迴圈加總c++在ptt上的文章推薦目錄

    for迴圈加總c++在C++ 4-2-使用for迴圈進行加總--黃建庭- YouTube的討論與評價

    使用 for迴圈 進行 加總 的概念與詳細說明. ... 【 C 語言入門】9 - 計次型的重複執行(for 述句). Feis Studio. Feis Studio. •. 36K views 6 years ago ...

    for迴圈加總c++在for迴圈的討論與評價

    for迴圈. 在C語言中,for語句使用最為靈活,它完全可以取代 while 語句。 ... 迴圈變數給予初值總是一個給予值語句, 它用來給迴圈控制變數給予初值; 迴圈條件是一個 ...

    for迴圈加總c++在[做中學dev c++] 重複一組指令- 迴圈for迴圈用C++ 寫求1加到10 ...的討論與評價

    [做中學dev c++] 重複一組指令- 迴圈for迴圈用C++ 寫求1加到10的總和 ... 程式中需要重複執行某一組指令功能時,迴圈就是最好的選擇。 我們可以根據程式的 ...

    for迴圈加總c++在迴圈的討論與評價

    幸好C 語言提供了迴圈結構(Loop),可以簡化重複動作的撰寫,只要使用幾行 ... 當i 等於101 的時候便不符合判斷式的要求,因此只會加總1、3、. 5、7…99。

    for迴圈加總c++在5.C++迴圈for - qtm052-Org - Google Sites的討論與評價

    i++ 先做後加:先執行本行指令、再將變數i加一。 for迴圈的目的是執行有限次數的敘述(指令),並且設定變數終止條件來跳出迴圈 ...

    for迴圈加總c++在重複結構以及迴圈練習 - 程式設計實習的討論與評價

    C. 需要把26 個整數加總起來. 也就是如果不用迴圈你需要寫下面的程式 scanf("%d%d", &a, &b); printf("%d\n", a+b); scanf("%d%d", &a, ...

    for迴圈加總c++在python練習-迴圈:數字加總 - Medium的討論與評價

    python練習-迴圈:數字加總 ... 利用迴圈直接計算加總,總和為a+a+1+a+2+a+3+. ... c = b d = a s = 0 for i in range(d,c+1): s = s+i print(s)

    for迴圈加總c++的PTT 評價、討論一次看



    更多推薦結果