我正在处理来自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语言。很抱歉没有指定!
答案 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