将Year-Days年龄格式转换为整数形式

时间:2014-06-29 17:43:03

标签: r date

我正在处理来自http://www.basketballreference.com的与个人游戏日志相关的数据。每个游戏日志都有一堆数据,但具体来说我关注的是Basketball Reference的Age格式。

以下是Ray Allen职业生涯的一些样本数据:

Date,Age,Tm,,Opp,,GS,MP,TS%,eFG%,ORB%,DRB%,TRB%,AST%,STL%,BLK%,TOV%,USG%,ORtg,DRtg,GmSc

1996-11-01,21-104,MIL,@,PHI,W(+8),1,28:00,.497,.400,0.0,7.6,3.8,0.0,5.4,0.0,7.1,20.6,111,105,7.4
2,2,

1996-11-02,21-105,MIL,,BOS,W(+22),1,21:00,.795,.800,6.0,9.7,8.1,16.3,7.3,0.0,8.1,26.1,150,98,17.7

"年龄"数据列为年 - 日,例如21-104高于含义21年,104天。

如何将其转换为整数形式(从21-104转换为21)?

非常感谢你!

编辑:我使用的是 R语言。很抱歉没有指定!

2 个答案:

答案 0 :(得分:0)

如果您将数据读入名为dd的data.frame,那么“Age”很可能会转换为因子变量。您可以在年龄结束时去掉破折号并转换为数字。例如

dd <- data.frame(Age=c("21-104", "23-63"))
dd$yearAge <- as.numeric(gsub("-.*$","",as.character(dd$Age)))
dd$yearAge
# [1] 21 23

答案 1 :(得分:0)

您似乎希望将年日转换为一年。

这将转换为数字(基于小数年份):

set.seed(1)  # for reproducible example
x <- paste(sample(21:30, 10, replace=T),sample(1:365,10,replace=T),sep="-")
x
as.integer(gsub("\\-.*","",x))+as.integer(gsub(".*\\-","",x))/365
#  [1] 23.20822 24.17808 26.68767 30.38630 23.76986 29.49863 30.71781 27.99452 27.38082 21.77808

这将转换为舍入:

round(as.integer(gsub("\\-.*","",x))+as.integer(gsub(".*\\-","",x))/365,0)
#  [1] 23 24 27 30 24 29 31 28 27 22

如果你想要的只是年份部分(例如截断),那么假设没有一个玩家小于10或者大于99,你可以抓住前两个字符并转换为整数:

as.integer(substr(x,1,2))
#  [1] 23 24 26 30 23 29 30 27 27 21