2015-02-03 3 views
0

Один год - год рождения, другой - сезон года; Цель состоит в том, чтобы рассчитать возраст (в годах) в течение определенного сезона. Я хочу взять эту информацию и создать новое поле (master$playerAge) в объединенном наборе данных. Я получаю незнакомую ошибку и не уверен, что вызывает. Я подтвердил, что и merged.all$yearID, и merged.all$birthYear существуют в merged.all. Любая помощь приветствуется.Рассчитать разницу за 2 года

Фрагмент кода:

## calculate age from birthYear and YearId 
master$playerAge <- paste(merged.all$yearId - merged.all$birthYear) 

Error: 
Error in `[<-.data.table`(x, j = name, value = value) : 
    RHS of assignment to new column 'playerAge' is zero length 
    but not empty list(). For new columns the RHS must either be 
    empty list() to create an empty list column, or, have length > 0; 
    e.g. NA_integer_, 0L, etc. 

dput():

Names = с ("playerID", "yearID", "TeamID", "lgID", "ограничение", "G", «AB», «R», «SO», «IBB», «HBP», «SH», «SF», «GIDP», «зарплата», «birthYear», «birthMonth», «BirthDay», «birthCountry» «deathState», «deathCity», «nameFirst», «nameLast», «nameGiven», «weight», «nameGiven», «deathCity», «deathGear», «deathMoyth», «deathDay», «deathCountry», «height», «bats», «throws», «debut», «finalGame», «retroID», «bbrefID», «name», «dob»), sorted = «playerID», class = c («data. table "," data.frame "), row.names = c (NA, -6L), .internal. selfref =)> -

+0

Я не знаю, почему вы используете функцию paste(). Если «yearID» и «birthYear» имеют тип POSIXct, тогда вы можете просто вычесть их, нет необходимости в paste(). – Michael

+0

@ Michael - спасибо за подсказку. Я удалил. –

+1

И вы должны отредактировать свой 'dput' в свой вопрос, это ужасно, как комментарий. – Gregor

ответ

1

я вижу опечатку в коде (малый и большой "D" буква "ID"):

Я подтвердил, что оба

merged.all$yearID and merged.all$birthYear 

master$playerAge <- paste(merged.all$yearId - merged.all$birthYear) 
Смежные вопросы