2016-04-16 4 views
1

Ich brauche diese Zeile in meinen Datenrahmen einzufügen:R Insert falsch Jahr in der Klasse Datum

new_row<-c("015-06-17","1+-07-24",0,1,">=10") 

Wie ich das falsch Daten in den Spalten setzen kann und Geburtsdatum MarriageDate, die in der Klasse Date sind?

Bestehende Datenrahmen:

BirthDate  MarriageDate  Sons  Daugther  Time  

    1952-10-05  1980-11-03  1    0   <10 
    1980-06-14  2002-05-20  0    2   >=10 

Erwartete Datenrahmen:

BirthDate  MarriageDate  Sons  Daugther  Time  

    1952-10-05  1980-11-03  1    0   <10 
    1980-06-14  2002-05-20  0    2   >=10 
    015-06-17   1+-07-24   0    1   >=10 

Ich brauche sie in den Datenrahmen setzen für die korrekte sie nach Einsatz.

+0

Ich möchte es tun, aber ich sehe es nicht. –

+0

ok ich habe es getan. Danke nochmal! –

Antwort

0

Es ist nicht klar über die Spaltentypen in 'df1'. Unter der Annahme, dass alle sind ‚Charakter‘, dann

rbind(df1, as.list(new_row)) 

Oder wenn die ‚Söhne‘ und ‚daughther‘ sind numeric, dann müssen wir die vector Elemente jeweiligen Klassen ändern.

lst <- lapply(new_row, function(x) { 
       x1 <- type.convert(x) 
       if(is.factor(x1)) as.character(x1) else x1}) 

df2 <- rbind(df1, lst) 
df2 
# BirthDate MarriageDate Sons Daugther Time 
#1 1952-10-05 1980-11-03 1  0 <10 
#2 1980-06-14 2002-05-20 0  2 >=10 
#3 015-06-17  1+-07-24 0  1 >=10 

str(df2) 
#'data.frame': 3 obs. of 5 variables: 
#$ BirthDate : chr "1952-10-05" "1980-06-14" "015-06-17" 
#$ MarriageDate: chr "1980-11-03" "2002-05-20" "1+-07-24" 
#$ Sons  : int 1 0 0 
#$ Daugther : int 0 2 1 
#$ Time  : chr "<10" ">=10" ">=10" 
+0

Vielen Dank für Ihre Antwort, aber nach dem Versuch, R Antwort ist: Fehler in charToDate (x): Zeichenkette ist nicht in einem einheitlichen Standardformat. –

+0

@ E.bl Wenn 'BirthDate' und 'MarriageDate' in der 'Date'-Klasse sind, wandle sie in' character' um zB 'df1 [1: 2] <- lapply (df1 [1: 2], as.character) 'da die 3. Zeile nicht im richtigen 'Date'-Format ist. – akrun

+0

Ich habe das versucht, aber die R Antwort ist jetzt: Warnmeldung: In '[<-. Factor' (' * tmp * ', iseq, value =" lunch "): ungültiger Faktor Level, NA erzeugt –