2015-02-03 4 views
0

1 년은 생년이고 다른 하나는 계절 연도입니다. 목표는 특정 계절의 나이 (년)를 계산하는 것입니다. 이 정보를 받아 병합 된 데이터 세트에 새로운 필드 (master$playerAge)를 생성하고 싶습니다. 익숙하지 않은 오류가 발생하고 무엇이 원인인지 확신 할 수 없습니다. merged.all$yearIDmerged.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() :

이름 =에 c ("playerID", "yearID", "teamID", "lgID", "정량", "G", "AB", "R", "SO", "IBB", "HB", "SH", "SF", "GIDP", "급여", "출생 연도", "birthDon" "deathCountry", "deathCity", "deathCity", "nameFirst", "nameLast", "nameGiven", "weight", "birthCity", "birthState" "badID", "retroID", "bbrefID", "name", "dob"), sorted = "playerID", class = c ("data. 테이블 ","data.frame "), row.names = c (NA, -6L), .internal. selfref =)> - 내가 코드에서 오타를 참조

+0

내가 모르는 것을 확인했다 paste() 함수를 사용하는 이유. 'yearID'와 'birthYear'가 POSIXct 유형이라면 paste()를 사용할 필요없이 빼기 만 할 수 있습니다. – Michael

+0

@ Michael - 팁 주셔서 감사합니다. 나는 제거했다. –

+1

그리고'dput'을 여러분의 질문에 맞게 편집해야합니다. 주석 으로서는 끔찍합니다. – Gregor

답변

1

"ID"에 (크고 작은 "D"문자) :

둘 다

merged.all$yearID and merged.all$birthYear 

master$playerAge <- paste(merged.all$yearId - merged.all$birthYear) 
관련 문제