【发布时间】:2017-05-23 15:16:54
【问题描述】:
我是一个绝对的 R 初学者,正在从事硕士项目。
我有一个 data.frame,其中包含有关小跑马的信息(他们的胜利、收入、时间记录等)。数据的组织方式是,每一行都包含马匹竞争的特定年份的信息,并包括每匹马“总计”的第一行,因此每个变量都有一个关于它的总竞争寿命的摘要。它看起来像这样:
我使用 eeptools 包中的 age_calc 函数创建了一个包含他们年龄的新变量:
travdata$Age<-age_calc(as.Date(travdata$Birth.date), enddate=as.Date("2016-12-31"),
units="years")
没有问题。我想弄清楚的是,是否有任何方法可以计算我掌握的每个特定年份的马的年龄-也就是说,“总”行的年龄将持续到 2016 年 12 月- 31,对于 2015 年,它将有他们当时的年龄,依此类推。我一直在尝试在 age_calc 中包含 if 语句,但它不起作用,我真的不知道如何最好地做到这一点。
您可以指出我的任何文献或帮助将非常非常感谢。
MWE
travdata <- data.frame(
"Id.Number"=c(rep("1938-98",3),rep("1803-97",7),rep("1221-03",4)),
"Name"=c(rep("Muuttuva",3),rep("Pelson Poika",7),rep("Muusan Muisto",4)),
"Sex"=c(rep("Mare",3),rep("Gelding",7),rep("Gelding",4)),
"Birth.year"=c(rep(1998,3),rep(1997,7),rep(2003,4)),
"Birth.date"=c(rep("1998-07-01",3),rep("1997-07-14",7),rep("2003-05-07",4)),
"Competition.year" = c("Total",2005,2004,"Total",2003,2004,2006,2005,2002,2001,2008,2010,"Total",2009),
"starts"=c(20,11,9,44,21,6,7,5,3,2,1,1,4,2),
"X1st.placements"=c(0,0,0,3,3,0,0,0,0,0,0,0,0,0),
"X2nd.placements"=c(2,2,0,1,0,1,0,0,0,0,0,0,0,0),
"X3rd.placements"=c(2,2,0,1,1,0,0,0,0,0,0,0,0,0),
"Earnings.euro"=c(1525,1425,100,2078,1498,580,0,0,0,0,0,0,10,10)
)
【问题讨论】:
-
欢迎来到 StackOverflow。请查看有关如何生成minimum, complete, and verifiable example 的这些提示,以及creating a great example in R 上的这篇文章。
-
我会保持这些数据整洁并删除总计行,您可以稍后使用
dplyr::group_by轻松获取总计,或者您可以将这些行移动到新表中。如果您需要这方面的帮助,请使用dput(head(travdata, 10))并将结果粘贴到您的问题中。这将为某人创建一个最低限度的示例。
标签: r