Home Forum Statistica con R Calcolo numero di ore di piggia

This topic contains 12 replies and has 3 voices.

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #5396

    cerzza
    Participant

    Salve a tutte/i,
    avrei bisogno di una mano circa il seguente quesito:
    ho un data frame composto come riportato sotto (dati al minuto).
    Ho calcolato le medie h, gg, per le variabili riportate, e ora vorrei calcolare il n.ro di ore della variabile “pioggia”, quindi quando il valore è >0.Tale variabile può assumere tre valori (NA, 0, >0)
    Vi sarei grato se qualcuno rispondesse.
    date press temp ws wd u. pioggia
    1 06/06/2017 00:00 985.2 17.7 1 342.8 73.3 0
    2 06/06/2017 00:01 985.2 17.8 1 334.4 73.4 0
    3 06/06/2017 00:02 985.2 17.8 1 323.9 73.6 0
    4 06/06/2017 00:03 985.1 17.8 1 317.4 73.8 0
    5 06/06/2017 00:04 985.1 17.8 0 324.7 74.0 0
    6 06/06/2017 00:05 985.1 17.8 0 349.0 74.4 0
    7 06/06/2017 00:06 985.1 17.8 0 38.5 74.8 0
    8 06/06/2017 00:07 985.2 17.9 1 57.5 75.8 0
    9 06/06/2017 00:08 985.2 17.9 1 62.1 76.2 0
    10 06/06/2017 00:09 985.2 17.8 1 18.2 75.8 0
    11 06/06/2017 00:10 985.2 17.7 1 102.6 75.0 0
    12 06/06/2017 00:11 985.2 17.6 0 96.4 74.0 0
    13 06/06/2017 00:12 985.2 17.5 0 121.3 73.9 0
    14 06/06/2017 00:13 985.2 17.5 0 356.2 73.8 0
    ……

    #5397

    cerzza
    Participant

    Ciao, forse il formato del dataframe non era correttamente inserito, e quindi poco leggibile.
    Spero sia più comprensibile adesso.

    > mets[1000:1200,]
    date press temp ws wd u% pioggia idquarter
    1000 2017-06-06 16:39:00 979.7 19.8 1 354.0 64.3 0.00 3
    1001 2017-06-06 16:40:00 979.8 19.8 2 356.9 63.8 0.00 3
    1002 2017-06-06 16:41:00 979.8 19.8 2 356.0 63.5 0.00 3
    1003 2017-06-06 16:42:00 979.8 19.8 1 4.0 64.0 0.00 3
    1004 2017-06-06 16:43:00 979.9 19.8 2 353.9 64.0 0.00 3
    1005 2017-06-06 16:44:00 980.0 19.8 2 343.5 62.7 0.00 3
    1006 2017-06-06 16:45:00 980.0 19.8 1 352.4 63.0 0.00 4
    1007 2017-06-06 16:46:00 980.0 19.9 1 344.1 63.5 0.00 4
    1008 2017-06-06 16:47:00 980.0 19.9 2 342.6 63.2 0.00 4
    1009 2017-06-06 16:48:00 980.0 19.9 2 339.3 62.9 0.00 4
    1010 2017-06-06 16:49:00 980.0 20.0 2 331.2 62.7 0.00 4
    1011 2017-06-06 16:50:00 980.0 20.0 1 337.3 63.4 0.00 4
    1012 2017-06-06 16:51:00 980.0 20.1 2 345.6 63.5 0.00 4
    1013 2017-06-06 16:52:00 980.1 20.1 2 339.5 63.0 0.00 4
    1014 2017-06-06 16:53:00 980.1 20.1 3 351.6 61.3 0.00 4
    1015 2017-06-06 16:54:00 980.1 20.0 3 351.0 59.3 0.00 4
    1016 2017-06-06 16:55:00 980.2 19.9 3 339.0 59.2 0.00 4
    1017 2017-06-06 16:56:00 980.2 19.9 3 338.1 58.7 0.00 4
    1018 2017-06-06 16:57:00 980.2 19.9 2 340.8 58.9 0.00 4
    1019 2017-06-06 16:58:00 980.2 19.9 2 342.0 57.1 0.00 4
    1020 2017-06-06 16:59:00 980.2 19.9 2 340.0 57.1 0.00 4
    1021 2017-06-06 17:00:00 963.9 19.6 2 344.3 55.6 0.00 1
    1022 2017-06-06 17:01:00 980.2 19.9 2 348.3 56.0 0.00 1
    1023 2017-06-06 17:02:00 980.2 19.9 2 355.4 55.8 0.00 1
    1024 2017-06-06 17:03:00 980.2 19.8 2 351.8 54.0 0.00 1
    1025 2017-06-06 17:04:00 980.1 19.8 2 354.4 54.2 0.00 1
    1026 2017-06-06 17:05:00 963.8 19.5 2 2.8 54.1 0.00 1
    1027 2017-06-06 17:06:00 980.1 19.8 3 345.3 54.7 0.00 1
    1028 2017-06-06 17:07:00 980.0 19.7 2 345.8 54.8 0.00 1
    1029 2017-06-06 17:08:00 979.9 19.7 2 352.5 55.1 0.00 1
    1030 2017-06-06 17:09:00 979.9 19.7 2 355.8 55.9 0.00 1
    1031 2017-06-06 17:10:00 979.9 19.7 2 1.8 56.3 0.00 1
    1032 2017-06-06 17:11:00 980.0 19.6 2 3.7 56.1 0.00 1
    1033 2017-06-06 17:12:00 980.0 19.6 2 354.9 56.0 0.00 1
    1034 2017-06-06 17:13:00 980.0 19.6 2 357.1 56.6 0.00 1
    1035 2017-06-06 17:14:00 979.9 19.6 2 359.9 57.1 0.00 1
    1036 2017-06-06 17:15:00 979.9 19.6 2 3.4 57.5 0.00 2
    1037 2017-06-06 17:16:00 979.8 19.6 2 340.0 58.1 0.00 2
    1038 2017-06-06 17:17:00 979.8 19.6 3 355.4 58.0 0.00 2
    1039 2017-06-06 17:18:00 979.8 19.6 2 336.4 58.0 0.00 2
    1040 2017-06-06 17:19:00 979.9 19.6 2 337.9 58.0 0.00 2
    1041 2017-06-06 17:20:00 980.0 19.6 3 336.9 57.5 0.02 2
    1042 2017-06-06 17:21:00 980.2 19.6 2 334.2 56.3 0.00 2
    1043 2017-06-06 17:22:00 980.2 19.5 2 347.3 55.8 0.00 2
    1044 2017-06-06 17:23:00 980.2 19.5 2 354.7 56.3 0.00 2
    1045 2017-06-06 17:24:00 980.1 19.5 2 348.0 56.7 0.00 2
    1046 2017-06-06 17:25:00 979.9 19.5 1 2.7 57.1 0.00 2
    1047 2017-06-06 17:26:00 979.8 19.4 3 357.3 57.0 0.00 2
    1048 2017-06-06 17:27:00 963.4 19.1 3 1.6 55.8 0.01 2
    1049 2017-06-06 17:28:00 963.3 19.0 2 8.4 56.7 0.01 2
    1050 2017-06-06 17:29:00 963.3 19.0 2 358.8 57.2 0.00 2
    1051 2017-06-06 17:30:00 979.6 19.2 2 352.1 58.0 0.00 3
    1052 2017-06-06 17:31:00 979.6 19.2 2 344.1 59.1 0.05 3
    1053 2017-06-06 17:32:00 979.6 19.2 3 343.3 60.3 0.23 3
    1054 2017-06-06 17:33:00 979.7 19.1 3 346.3 59.9 0.40 3
    1055 2017-06-06 17:34:00 979.8 18.9 4 343.1 60.6 0.67 3
    1056 2017-06-06 17:35:00 979.9 18.6 3 347.2 62.6 0.52 3
    1057 2017-06-06 17:36:00 980.0 18.4 3 340.5 64.7 0.53 3
    1058 2017-06-06 17:37:00 980.0 18.1 3 337.5 65.8 0.90 3
    1059 2017-06-06 17:38:00 980.2 17.9 2 309.4 67.3 0.51 3
    1060 2017-06-06 17:39:00 980.4 17.6 2 321.1 68.9 0.74 3
    1061 2017-06-06 17:40:00 980.6 17.3 2 306.1 69.4 0.70 3
    1062 2017-06-06 17:41:00 980.8 17.0 2 252.6 70.2 1.29 3
    1063 2017-06-06 17:42:00 981.0 16.7 2 226.8 71.2 1.60 3
    1064 2017-06-06 17:43:00 981.2 16.4 2 260.7 72.1 1.26 3
    1065 2017-06-06 17:44:00 981.1 16.1 2 293.0 73.1 1.77 3
    1066 2017-06-06 17:45:00 980.7 15.8 2 324.6 73.7 1.88 4
    1067 2017-06-06 17:46:00 980.4 15.5 3 348.7 74.5 1.21 4
    1068 2017-06-06 17:47:00 963.7 15.0 2 351.4 74.6 1.03 4
    1069 2017-06-06 17:48:00 980.0 15.1 3 329.3 77.5 0.93 4
    1070 2017-06-06 17:49:00 980.0 15.0 1 352.5 78.6 0.71 4
    1071 2017-06-06 17:50:00 979.9 15.0 2 343.7 79.4 0.53 4
    1072 2017-06-06 17:51:00 979.9 15.0 2 334.1 79.8 0.12 4
    1073 2017-06-06 17:52:00 979.9 15.1 2 358.4 80.1 0.05 4
    1074 2017-06-06 17:53:00 979.9 15.1 2 345.6 80.0 0.01 4
    1075 2017-06-06 17:54:00 979.9 15.2 2 0.4 79.4 0.01 4
    1076 2017-06-06 17:55:00 979.8 15.3 2 354.4 78.7 0.00 4
    1077 2017-06-06 17:56:00 979.7 15.4 2 355.8 78.1 0.00 4
    1078 2017-06-06 17:57:00 979.7 15.5 1 8.9 77.8 0.00 4
    1079 2017-06-06 17:58:00 979.7 15.6 1 32.4 77.4 0.00 4
    1080 2017-06-06 17:59:00 979.7 15.7 1 49.5 77.0 0.00 4
    1081 2017-06-06 18:00:00 979.8 15.8 1 53.1 76.8 0.00 1
    1082 2017-06-06 18:01:00 979.8 15.8 1 34.6 77.0 0.00 1
    1083 2017-06-06 18:02:00 979.9 15.9 2 35.0 76.8 0.00 1
    1084 2017-06-06 18:03:00 979.9 15.9 2 10.0 76.4 0.00 1
    1085 2017-06-06 18:04:00 980.0 15.9 2 3.2 76.5 0.00 1
    1086 2017-06-06 18:05:00 980.0 16.0 2 350.9 77.0 0.00 1
    1087 2017-06-06 18:06:00 980.0 16.0 2 350.1 77.4 0.00 1
    1088 2017-06-06 18:07:00 980.0 16.0 2 11.2 77.6 0.00 1
    1089 2017-06-06 18:08:00 979.9 16.0 2 17.6 77.6 0.00 1
    1090 2017-06-06 18:09:00 979.9 16.1 2 6.5 76.7 0.00 1
    1091 2017-06-06 18:10:00 979.9 16.1 3 345.5 75.8 0.00 1
    1092 2017-06-06 18:11:00 979.9 16.2 2 337.4 75.0 0.00 1
    1093 2017-06-06 18:12:00 979.9 16.3 2 341.0 75.0 0.00 1
    1094 2017-06-06 18:13:00 979.8 16.3 2 11.9 75.1 0.00 1
    1095 2017-06-06 18:14:00 979.8 16.5 2 30.0 75.6 0.00 1
    1096 2017-06-06 18:15:00 979.8 16.5 1 45.0 75.6 0.00 2
    1097 2017-06-06 18:16:00 963.5 16.3 1 54.4 74.4 0.00 2
    1098 2017-06-06 18:17:00 963.5 16.3 1 47.0 74.2 0.00 2
    1099 2017-06-06 18:18:00 979.8 16.6 1 21.1 75.7 0.00 2
    1100 2017-06-06 18:19:00 979.8 16.7 2 15.2 75.9 0.00 2
    1101 2017-06-06 18:20:00 979.8 16.7 1 29.2 75.8 0.00 2
    1102 2017-06-06 18:21:00 979.8 16.7 1 33.1 75.5 0.00 2
    1103 2017-06-06 18:22:00 979.8 16.8 1 52.4 75.7 0.00 2
    1104 2017-06-06 18:23:00 979.8 16.8 1 49.9 75.5 0.00 2
    1105 2017-06-06 18:24:00 979.9 16.8 1 78.1 75.1 0.00 2
    1106 2017-06-06 18:25:00 979.9 16.8 1 86.0 75.2 0.00 2
    1107 2017-06-06 18:26:00 979.8 16.9 1 46.8 75.4 0.00 2
    1108 2017-06-06 18:27:00 979.8 16.9 2 32.3 75.5 0.00 2
    1109 2017-06-06 18:28:00 979.8 16.9 2 19.9 74.7 0.00 2
    1110 2017-06-06 18:29:00 979.8 16.9 2 33.6 74.2 0.00 2
    1111 2017-06-06 18:30:00 979.7 16.9 2 29.2 73.7 0.00 3
    1112 2017-06-06 18:31:00 979.7 17.0 2 26.7 73.7 0.00 3
    1113 2017-06-06 18:32:00 979.8 17.0 2 30.4 73.0 0.00 3
    1114 2017-06-06 18:33:00 979.8 17.0 3 19.8 72.8 0.00 3
    1115 2017-06-06 18:34:00 963.5 16.8 2 25.3 71.6 0.00 3
    1116 2017-06-06 18:35:00 979.8 17.1 2 21.8 73.0 0.00 3
    1117 2017-06-06 18:36:00 979.8 17.1 2 25.6 73.7 0.00 3
    1118 2017-06-06 18:37:00 979.8 17.2 2 18.1 74.0 0.00 3
    1119 2017-06-06 18:38:00 979.7 17.2 2 6.4 74.6 0.00 3
    1120 2017-06-06 18:39:00 979.7 17.2 2 5.6 75.0 0.00 3
    1121 2017-06-06 18:40:00 979.7 17.3 2 7.1 74.9 0.00 3
    1122 2017-06-06 18:41:00 979.7 17.3 2 18.4 74.7 0.00 3
    1123 2017-06-06 18:42:00 963.4 17.0 2 356.4 73.5 0.00 3
    1124 2017-06-06 18:43:00 979.7 17.3 2 359.7 74.4 0.00 3

    #5409

    pdeninis
    Participant

    Io farei banalmente

    sum(pioggia>0)

    Siccome le letture sono fatte ad ogni minuto il risultato sarà il numero dei minuti durante i quali la variabile pioggia era maggiore di 0.

    Tra i dati di esempio non c’erano NA.

    • This reply was modified 5 months, 3 weeks ago by  pdeninis.
    • This reply was modified 5 months, 3 weeks ago by  pdeninis.
    • This reply was modified 5 months, 3 weeks ago by  pdeninis.
    • This reply was modified 5 months, 3 weeks ago by  pdeninis.
    #5420
    Davide Massidda
    Davide Massidda
    Moderator

    …e se nel resto del data frame ci dovessero essere dati mancanti, si potrebbe fare:
    sum(pioggia[!is.na(pioggia)]>0)

    #5421

    cerzza
    Participant

    ciao Davide, innanzitutto, grazie per le risposte.
    Nel data frame ci possono esser dei dati NA, tuttavia, il mio problema è come calcolare quante ore (o la frazione dell’ora) ha piovuto, passando dai dati al minuto a quelle orarie, e cosi via quando faò le medie giornaliere.
    nella colonna t.prec. (time precipitation) ho inserito dei valori casuali, ma mi aspetto di avere la somma dei minuti (espressa in ora o sua frazione) in cui la precipitazione è stata >0
    Il risultato che voglio ottenere è il seguente:
    `> head(metsacbo.hour, 20)
    date press temp ws wd u. prec. t.prec
    1 2017-06-06 00:00:00 983.8767 17.78000 0.78 15.28 72.7 0.0 0
    2 2017-06-06 01:00:00 979.3850 17.50667 0.55 32.12 77.0 0.0 0
    3 2017-06-06 02:00:00 981.6917 17.54000 0.80 0.56 74.9 0.0 0
    4 2017-06-06 03:00:00 982.1200 17.45500 0.71 357.96 78.0 0.0 0
    5 2017-06-06 04:00:00 982.2317 17.70333 0.58 40.69 73.7 0.0 0
    6 2017-06-06 05:00:00 981.3617 17.57500 0.76 353.52 76.1 0.0 0
    7 2017-06-06 06:00:00 979.8900 17.78167 0.70 6.18 74.2 0.0 0
    8 2017-06-06 07:00:00 981.3983 18.07167 0.68 26.7 73.33 0.0 0
    9 2017-06-06 08:00:00 981.4217 18.82500 0.80 26.37 69.51 0.0 0
    10 2017-06-06 09:00:00 980.8600 19.06667 0.10 45.86 72.39 0.0 0
    11 2017-06-06 10:00:00 979.1400 19.43167 0.31 351.21 70.35 0.0 0
    12 2017-06-06 11:00:00 981.4917 19.99500 1.20 41.28 67.22 0.002 0.03
    13 2017-06-06 12:00:00 979.5517 21.35667 1.58 120.63 58.17 0.0 0
    14 2017-06-06 13:00:00 979.0867 22.05000 1.98 122.62 59.15 0.0 0
    15 2017-06-06 14:00:00 979.2433 21.78833 1.78 119.63 59.83 0.0 0
    16 2017-06-06 15:00:00 978.4400 20.03167 1.55 121.80 69.76 0.13 0.45
    17 2017-06-06 16:00:00 978.6400 20.41833 1.68 3.32 64.91 0.0 0
    18 2017-06-06 17:00:00 978.4017 18.10333 2.15 344.71 63.96 0.3 0.3
    19 2017-06-06 18:00:00 977.9017 16.79667 2.06 15.22 74.45 0.0 0
    20 2017-06-06 19:00:00 979.5517 16.97000 2.73 357.15 71.36 0.1 0.12
    >

    #5422

    cerzza
    Participant

    A questo punto, chiedo anche questo, caèisco che è una banalità,
    come faccio ad inserire in una domanda pezzo di codice o data frame nella sua struttura originaria?

    #5424

    pdeninis
    Participant

    il mio problema è come calcolare quante ore (o la frazione dell’ora) ha piovuto, passando dai dati al minuto a quelle orarie, e cosi via quando faò le medie giornaliere.

    Esistono funzioni ad hoc in pacchetti tipo lubridate… Però,
    se hai bisogno solo delle ore giornaliere, per divertimento puoi fare:

    
    pioggia<-sum(pioggia[!is.na(pioggia)]>0)
    ore.pioggia<-pioggia%%60
    minuti.pioggia<-pioggia%/%60
    out<-c(ore.pioggia, minuti.pioggia)
    names(out)<-c("ore", "minuti")
    out
    
    #5425

    pdeninis
    Participant

    come faccio ad inserire in una domanda pezzo di codice

    Nella finestra di editing ci sono alcune alcuni bottoni che inseriscono tag. Quello per inserire codice è, naturalmente, “code”, che inserisce un apice (`).
    Devi inserire un tag (apice) prima ed uno, di chiusura, dopo il blocco di codice.

    • This reply was modified 5 months, 3 weeks ago by  pdeninis.
    #5455

    cerzza
    Participant

    Ciao pdeninis,
    grazie per la risposta, e ti chiedo scusa se non ti ho risposto prima.
    Ho pravato il pezzo di codice che mi hai consigliato, ma non ottengo niente.

    #5464

    pdeninis
    Participant

    Ho pravato il pezzo di codice che mi hai consigliato, ma non ottengo niente.

    Mi dispiace. Credo che se il nome variabile (pioggia) usato è uguale a quello del tuo database potrebbe sovrascrivere la variabile originaria.
    Meglio se la chiami diversamente, a scanso di equivoci. Per esempio:

    precipitazioni<-sum(pioggia[!is.na(pioggia)]>0)

    Il codice a partire dalla 2a linea funziona:

    > precipitazioni<-132
    > ore.pioggia<-precipitazioni%/%60
    > minuti.pioggia<-precipitazioni%%60
    > out<-c(ore.pioggia, minuti.pioggia)
    > names(out)<-c("ore", "minuti")
    > out
       ore minuti 
        2      12 
    

    La prima e più importante linea calcola soltanto il numero di occorrenze maggiore di zero nella tua variabile “pioggia”.

    Ho creduto di aver capito che ad ogni minuto è stata fatta una registrazione di tipo binario, pioggia si o pioggia no. In questo caso il codice andrebbe bene.

    Se invece il dato è stato riportato in un altro modo, spiega come: da quello dipende come elaborarlo.

    Nel caso fossero riportati dati in minuti, potrebbe andare questo:

    precipitazioni<-sum(which(pioggia[!is.na(pioggia)]>0))

    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    #5473

    pdeninis
    Participant

    Non tenere conto dell’ultimo: nella fretta di editarlo l’ho riportato errato. Somma gli indici e non i valori.

    Questo è quello corretto!

    precipitazioni<-sum(pioggia[which(pioggia>0)])

    Fa la somma delle righe della tua variabile “pioggia” corrispondenti a quelle del vettore calcolato da:

    which(pioggia>0)

    Sembra ignori i NA senza dare problemi.
    A seconda di come sono riportati i dati nel vettore pioggia (se ci sono ore o secondi) è necessario ritrasformarli prima tutti in minuti primi.

    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    #5487

    pdeninis
    Participant

    I valori riportati nella variabile “pioggia” potrebbero essere quantità, ovvero mm caduti, però che si parli di mm di pioggia caduti in un solo minuto mi sembra improbabile…

    Che rappresentano quei numeri?

    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
    #5489

    pdeninis
    Participant

    Insomma, quello che hai scritto:

    la variabile “pioggia”, quindi quando il valore è >0.Tale variabile può assumere tre valori (NA, 0, >0)

    giustifica la prima soluzione.

    Ovvero, viene fatta una misurazione ogni minuto. La linea di codice conta il numero di righe di “pioggia” con valore > 0. Quello è il numero di minuti di pioggia.

    Però io vedo:

    ....
    1062 2017-06-06 17:41:00 980.8 17.0 2 252.6 70.2 1.29 3
    1063 2017-06-06 17:42:00 981.0 16.7 2 226.8 71.2 1.60 3
    1064 2017-06-06 17:43:00 981.2 16.4 2 260.7 72.1 1.26 3
    1065 2017-06-06 17:44:00 981.1 16.1 2 293.0 73.1 1.77 3
    1066 2017-06-06 17:45:00 980.7 15.8 2 324.6 73.7 1.88 4
    1067 2017-06-06 17:46:00 980.4 15.5 3 348.7 74.5 1.21 4
    ....
    

    e mi viene il dubbio che i valori della penultima colonna (pioggia) significhino qualcosa di più di un “pioggia SI” o “pioggia NO”.

    • This reply was modified 4 months, 3 weeks ago by  pdeninis.
Viewing 13 posts - 1 through 13 (of 13 total)

You must be logged in to reply to this topic.