Hi,

I tried this without the changing the class, but there was no warning.

 str(release_freq)
#'data.frame':    62 obs. of  4 variables:
# $ d_release: Factor w/ 31 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ m_release: Factor w/ 2 levels "5","6": 1 1 1 1 1 1 1 1 1 1 ...
# $ y_release: Factor w/ 1 level "2004": 1 1 1 1 1 1 1 1 1 1 ...
# $ Freq     : num  0 0 0 0 1 1 1 0 0 1 ...
 str(temp_h12)
#'data.frame':    31 obs. of  4 variables:
# $ y_temp: int  2004 2004 2004 2004 2004 2004 2004 2004 2004 2004 ...
# $ m_temp: int  5 5 5 5 5 5 5 5 5 5 ...
# $ d_temp: int  1 2 3 4 5 6 7 8 9 10 ...
# $ temp  : num  16.9 18 17.4 19.7 105.7 ...


res<-merge(release_freq, temp_h12, by.x=c("y_release","m_release","d_release"), 
by.y=c("y_temp","m_temp","d_temp"), stringsAsFactors=FALSE)

  head(res)
 # y_release m_release d_release Freq temp
#1      2004         5         1    0 16.9
#2      2004         5        10    1 16.1
#3      2004         5        11    1 15.8
#4      2004         5        12    1 15.1
#5      2004         5        13    0 17.8
#6      2004         5        14    0 17.4

# changing the class
release_freq$d_release <- as.integer(as.character(release_freq$d_release))
release_freq$m_release <- as.integer(as.character(release_freq$m_release))
release_freq$y_release <- as.integer(as.character(release_freq$y_release))
res1<- merge(release_freq, temp_h12, 
by.x=c("y_release","m_release","d_release"), 
by.y=c("y_temp","m_temp","d_temp"), stringsAsFactors=FALSE)

head(res1)
#  y_release m_release d_release Freq temp
#1      2004         5         1    0 16.9
#2      2004         5        10    1 16.1
#3      2004         5        11    1 15.8
#4      2004         5        12    1 15.1
#5      2004         5        13    0 17.8
#6      2004         5        14    0 17.4

The results are not identical.
  identical(res,res1)
#[1] FALSE
str(res)
#'data.frame':    31 obs. of  5 variables:
# $ y_release: Factor w/ 1 level "2004": 1 1 1 1 1 1 1 1 1 1 ...
# $ m_release: Factor w/ 2 levels "5","6": 1 1 1 1 1 1 1 1 1 1 ...
# $ d_release: Factor w/ 31 levels "1","2","3","4",..: 1 10 11 12 13 14 15 16 
17 18 ...
# $ Freq     : num  0 1 1 1 0 0 1 1 0 1 ...
# $ temp     : num  16.9 16.1 15.8 15.1 17.8 17.4 16 17.7 17.3 22.3 ...
 str(res1)
#'data.frame':    31 obs. of  5 variables:
# $ y_release: int  2004 2004 2004 2004 2004 2004 2004 2004 2004 2004 ...
# $ m_release: int  5 5 5 5 5 5 5 5 5 5 ...
# $ d_release: int  1 10 11 12 13 14 15 16 17 18 ...
# $ Freq     : num  0 1 1 1 0 0 1 1 0 1 ...
# $ temp     : num  16.9 16.1 15.8 15.1 17.8 17.4 16 17.7 17.3 22.3 ...


sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8    
 [5] LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] stringr_0.6.2  reshape2_1.2.2

loaded via a namespace (and not attached):
[1] plyr_1.8

A.K.

----- Original Message -----
From: Rui Barradas <ruipbarra...@sapo.pt>
To: Stefano Sofia <stefano.so...@regione.marche.it>
Cc: "r-help@r-project.org" <r-help@r-project.org>
Sent: Tuesday, July 23, 2013 6:50 AM
Subject: Re: [R] Some days missing using xtabs

Hello,

As for your second question, before merge(), try the following.

release_freq$d_release <- as.integer(as.character(release_freq$d_release))
release_freq$m_release <- as.integer(as.character(release_freq$m_release))
release_freq$y_release <- as.integer(as.character(release_freq$y_release))


And the warning is gone.

Hope this helps,

Rui Barradas

Em 23-07-2013 10:33, Stefano Sofia escreveu:
> Dear R-users,
> given the following data frame called hospital_2004
>
> gender d_birth m_birth y_birth address d_admittance m_admittance y_admittance 
> yard_admittance d_release m_release y_release yard_release diaprinc diasec1 
> diasec2 diasec3 diasec4 diasec5
> 2 13 12 1929 42002 30 3 2004 3003 6 5 2004 4902 430 4299 51881 4275 78001 0
> 1 1 8 1935 42002 7 4 2004 2401 18 5 2004 1801 20500 V581 0388 5849 0 0
> 1 23 12 1956 42018 26 4 2004 2402 31 5 2004 2402 1552 5715 7895 25000 4148 
> 5722
> 1 9 8 1919 42002 05 5 2004 2602 22 5 2004 4902 51881 4254 4275 0 0 0
> 2 11 1 1925 52014 30 4 2004 2603 13 6 2004 4902 51881 49121 2732 4275 4299 
> 5849
> 2 1 3 1963 44060 1 5 2004 5101 16 5 2004 2401 3201 1519 1976 1983 4019 0
> 1 6 3 1937 45010 6 5 2004 3003 12 5 2004 4901 431 3314 41189 25001 4019 V594
> 1 3 9 1931 42034 3 5 2004 5101 5 5 2004 5101 78559 4829 5119 1619 4241 585
> 2 13 9 1912 41007 5 5 2004 4901 7 5 2004 4901 85225 4019 42731 49121 0 0
> 1 21 10 1936 15146 7 5 2004 4901 10 5 2004 4901 431 430 V594 V595 0 0
> 2 8 5 1933 43044 8 5 2004 5802 8 6 2004 5802 5712 45620 2851 5119 5184 0
> 1 25 1 1926 41057 8 5 2004 4901 15 5 2004 4901 431 78001 49121 0 0 0
> 1 6 1 1923 42002 10 5 2004 1401 11 5 2004 4901 4440 412 4413 0 0 0
> 1 19 3 1934 42022 9 5 2004 1401 21 6 2004 4901 4413 5609 99811 4019 412 0
> 1 6 6 1921 43052 15 5 2004 4302 4 6 2004 4302 1890 20280 436 49121 9986 V1005
>
> when I try to evaluate the frequency of daily releases through
>
> release_freq <- as.data.frame(xtabs( ~ d_release + m_release + y_release, 
> data=hospital_2004))
>
> I get the following result:
>
> d_release m_release y_release Freq
> 4         5      2004    0
> 5         5      2004    1
> 6         5      2004    1
> 7         5      2004    1
> 8         5      2004    0
> 10         5      2004    1
> 11         5      2004    1
> 12         5      2004    1
> 13         5      2004    0
> 15         5      2004    1
> 16         5      2004    1
> 18         5      2004    1
> 21         5      2004    0
> 22         5      2004    1
> 31         5      2004    1
> 4         6      2004    1
> 5         6      2004    0
> 6         6      2004    0
> 7         6      2004    0
> 8         6      2004    1
> 10         6      2004    0
> 11         6      2004    0
> 12         6      2004    0
> 13         6      2004    1
> 15         6      2004    0
> 16         6      2004    0
> 18         6      2004    0
> 21         6      2004    1
> 22         6      2004    0
> 31         6      2004    0
>
> Why the 1st, 2nd, 3rd, 9th, 14th, 17th, 19th, 20th, from 23rd to 30th of both 
> May and June are missing? (and there is the 31st of June?)
>
> And a final question: why given another data frame called temp_h12
>
> y_temp m_temp d_temp temp
> 2004 5 1 16.90
> 2004 5 2 18.00
> 2004 5 3 17.40
> 2004 5 4 19.70
> 2004 5 5 105.70
> 2004 5 6 17.30
> 2004 5 7 17.00
> 2004 5 8 16.20
> 2004 5 9 16.10
> 2004 5 10 16.10
> 2004 5 11 15.80
> 2004 5 12 15.10
> 2004 5 13 17.80
> 2004 5 14 17.40
> 2004 5 15 16.00
> 2004 5 16 17.70
> 2004 5 17 17.30
> 2004 5 18 22.30
> 2004 5 19 23.30
> 2004 5 20 24.30
> 2004 5 21 19.90
> 2004 5 22 15.70
> 2004 5 23 15.80
> 2004 5 24 17.10
> 2004 5 25 18.30
> 2004 5 26 21.00
> 2004 5 27 18.20
> 2004 5 28 17.90
> 2004 5 29 19.40
> 2004 5 30 22.10
> 2004 5 31 17.40
>
> merge(release_freq, temp_h12, by.x=c("y_release","m_release","d_release"), 
> by.y=c("y_temp","m_temp","d_temp"), stringsAsFactors=FALSE)
>
> gives the following warning
>
> Warning message:
> In `[<-.factor`(`*tmp*`, ri, value = 1:31) :
>    invalid factor level, NAs generated
> ?
>
>
>
> Thank you for your help
> Stefano Sofia
>
>
>
> ________________________________
>
> AVVISO IMPORTANTE: Questo messaggio di posta elettronica può contenere 
> informazioni confidenziali, pertanto è destinato solo a persone autorizzate 
> alla ricezione. I messaggi di posta elettronica per i client di Regione 
> Marche possono contenere informazioni confidenziali e con privilegi legali. 
> Se non si è il destinatario specificato, non leggere, copiare, inoltrare o 
> archiviare questo messaggio. Se si è ricevuto questo messaggio per errore, 
> inoltrarlo al mittente ed eliminarlo completamente dal sistema del proprio 
> computer. Ai sensi dell'art. 6 della DGR n. 1394/2008 si segnala che, in caso 
> di necessità ed urgenza, la risposta al presente messaggio di posta 
> elettronica può essere visionata da persone estranee al destinatario.
> IMPORTANT NOTICE: This e-mail message is intended to be received only by 
> persons entitled to receive the confidential information it may contain. 
> E-mail messages to clients of Regione Marche may contain information that is 
> confidential and legally privileged. Please do not read, copy, forward, or 
> store this message unless you are an intended recipient of it. If you have 
> received this message in error, please forward it to the sender and delete it 
> completely from your computer system.
>
>     [[alternative HTML version deleted]]
>
>
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to