| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Lun Juin 19, 2006 9:07 am Sujet du message: Formats de date |
|
|
Est ce que vous savez ce que cette erreur signifie exactement et comment on peut y remédier?
| Code: | Erreur dans fromchar(x) : la chaîne de caractères n'est pas dans un format standard non ambigu
|
|
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Lun Juin 19, 2006 11:36 am Sujet du message: |
|
|
Il faudrait nous dire comment est apparue cette erreur. La fonction traceback(), appelée immédiatement après l'erreur, peut être très utile pour comprendre d'où vient le pb.
Renaud |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Lun Juin 19, 2006 11:53 am Sujet du message: |
|
|
Voici la commance qui a entrainé cette erreur:
| Code: | NewTab$DateA <- as.Date(NewTab$DateAngio, order="dmy")
|
merci |
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Lun Juin 19, 2006 11:57 am Sujet du message: |
|
|
| Donc le message est clair: ta variable décrivant la date n'est pas dans un format sans ambiguité (exemple: 07/02/05). Il faut préciser le format avec l'argument... format. Etonnant, non ? Voir l'aide de as.Date... |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Lun Juin 19, 2006 12:21 pm Sujet du message: |
|
|
| même avec l'argument format ca ne marche pas...j'obtiens des NA dans toute la colonne. et l'aide de as.Date j'pense que je le connais plutot bien maintenant! |
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Lun Juin 19, 2006 1:35 pm Sujet du message: |
|
|
Je ne connais pas l'argument "order" pour as.Date, et order n'est pas une fonction générique ==> je me demande ce que signifie order = "dmy".
| Code: | > test <- data.frame( MaDate = c("12-25-03", "12-25-04"))
> test
MaDate
1 12-25-03
2 12-25-04
> as.Date(test$MaDate, order = "dmy")
Erreur dans fromchar(x) : la chaîne de caractères n'est pas dans un format standard non ambigu
> as.Date(test$MaDate, format = "%d-%m-%Y")
[1] NA NA
> as.Date(test$MaDate, format = "%m-%d-%y")
[1] "2003-12-25" "2004-12-25" |
La fonction "methods" permet de trouver les méthodes disponibles pour as.Date:
| Code: | > methods("as.Date")
[1] as.Date.character as.Date.date as.Date.dates as.Date.default as.Date.factor as.Date.POSIXct as.Date.POSIXlt
|
Apparemment, l'erreur proviendrait de la méthode pour les chaînes de caractères, ce qui est confirmé en examinant le code:
| Code: | > as.Date.character
function (x, format = "", ...)
{
fromchar <- function(x) {
xx <- x[1]
if (is.na(xx)) {
j <- 1
while (is.na(xx) && (j <- j + 1) <= length(x)) xx <- x[j]
if (is.na(xx))
f <- "%Y-%m-%d"
}
if (is.na(xx) || !is.na(strptime(xx, f <- "%Y-%m-%d")) ||
!is.na(strptime(xx, f <- "%Y/%m/%d")))
return(strptime(x, f))
stop("character string is not in a standard unambiguous format")
}
res <- if (missing(format))
fromchar(x)
else strptime(x, format)
.Internal(POSIXlt2Date(res))
}
<environment: namespace:base>
|
Il s'agit dont bien d'une erreur de format. Tu n'as sans doute pas assez bien lu l'aide de as.Date ;-)
Renaud |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Lun Juin 19, 2006 2:39 pm Sujet du message: |
|
|
| et donc au final de quelle facon vous pensez que je puisse m'en sortir car la je galère vraiment et ne sais plus par quel moyen passé! |
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Lun Juin 19, 2006 3:19 pm Sujet du message: |
|
|
| Trouver le bon format correspondant à vos dates. Pouvez-vous nous montrer les premiers éléments de NewTab$DateAngio ? |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Mar Juin 20, 2006 9:30 am Sujet du message: |
|
|
| Code: | NOM NIP DateAngio N.Angio
1 xx 22.09.1952 1
2 yyy 8.04.1915 2
3 zzz 1.01.1923 1
|
il faut savoir que pour certains patients la date d'angio est absente |
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Mar Juin 20, 2006 9:38 am Sujet du message: |
|
|
Donc:
| Code: | > test <- data.frame(DateAngio = c("22.09.1952", "8.04.1915", "1.01.1923", ""))
> test
DateAngio
1 22.09.1952
2 8.04.1915
3 1.01.1923
4
> as.Date(test$DateAngio, format = "%d.%m.%Y")
[1] "1952-09-22" "1915-04-08" "1923-01-01" NA
|
Renaud |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Mar Juin 20, 2006 12:12 pm Sujet du message: |
|
|
merci beaucoup...en fait je crois que j'ai eu un soucy de version!
mais j'ai une autre erreur: | Code: |
NewTriNom$ecart <- as.numeric(diff(NewTriNom$DateAngio))
Erreur dans "$<-.data.frame"(`*tmp*`, "ecart", value = c(1, 1605, 247, -1401, :
le tableau de remplacement a 3618 lignes, le tableau remplacé en a 3619
|
|
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Mar Juin 20, 2006 12:36 pm Sujet du message: |
|
|
| Fastoche. C'est en rapport avec la fonction diff. Je vous laisse chercher... |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Mar Juin 20, 2006 1:51 pm Sujet du message: |
|
|
je sais qu'il y a peut etre un truk avec lag et différences mais ne compren pas bien ce qu'il désigne!
j'ai de moins en moins de tps donc ce serait vraiment sympa si vous pouviez m'aidez |
|
| Revenir en haut de page |
|
 |
Renaud Lancelot
Inscrit le: 16 Déc 2004 Messages: 2323 Localisation: CIRAD, Montpellier
|
Posté le: Mar Juin 20, 2006 8:08 pm Sujet du message: |
|
|
Si x est un vecteur de longueur n, diff(x) renvoie un vecteur de longueur n-1. Les colonnes de votre data.frame n'ont alors plus la même longueur ce qui entraîne le message d'erreur.
Renaud |
|
| Revenir en haut de page |
|
 |
LA haumont
Inscrit le: 16 Mai 2006 Messages: 41 Localisation: paris
|
Posté le: Mer Juin 21, 2006 9:33 am Sujet du message: |
|
|
ca confirme se que j'avais compris ...merci beaucoup
je crois que j'ai tt essayer avec lag et différences..il y a une autre option ? vous voyez ce qu'il faudrait mettre exactement? |
|
| Revenir en haut de page |
|
 |
|