2016-12-27 8 views
0

У меня есть столбец с:Переименование заголовок столбца, содержащего значения даты

 id father mother sex birthdate.x birthdate.y 
1 john  0  0 1  <NA>   NA 
2 mari  0  0 2  01/01/1996 NA 
3 paul  0  0 2  <NA>  01/01/1995 
4 ralf  0  0 2  <NA>   NA 
5 kimb  0  0 2  01/01/1997 NA 

И каждый раз, когда я использую это «слияние» birthdate.x и birthdate.y, это дает мне простой номер.

df1$birthdate.x <- ifelse(is.na(df1$birthdate.y), df1$birthdate.x, df1$birthdate.y) 
df1$birthdate.y <- NULL 
names(df1)[names(df1)=="birthdate.x"] <- "birthdate" 

     id  father mother sex birthdate 
1 john  0  0  1 NA 
2 mari  0  0  2 2 
3 paul  0  0  2 1 
4 ralf  0  0  2 NA 
5 kimb  0  0  2 3 
+2

'ifelse' теряет атрибуты; в этом случае метки факторов. Преобразуйте оба символа, и он будет работать. (Как ни странно, если вы конвертируете в класс Date, у вас будет такая же проблема.) – alistaire

+0

Как я могу преобразовать в символ? –

+0

'df1 $ birthdate.x <- as.character (df1 $ birthdate.x)' и повторять для 'birthdate.y' или делать это непосредственно в' ifelse', то есть 'df1 $ birthdate <- ifelse (is.na (df1 $ birthdate.y), as.character (df1 $ birthdate.x), as.character (df1 $ birthdate.y)) ' – alistaire

ответ

1

Мы можем сделать это с pmax

transform(df1, birthdate = pmax(as.character(birthdate.x), 
      as.character(birthdate.y), na.rm = TRUE))[-(5:6)] 
# id father mother sex birthdate 
#1 john  0  0 1  <NA> 
#2 mari  0  0 2 01/01/1996 
#3 paul  0  0 2 01/01/1995 
#4 ralf  0  0 2  <NA> 
#5 kimb  0  0 2 01/01/1997