【发布时间】:2019-07-21 20:52:58
【问题描述】:
我从Lahman 数据库中按字母顺序列出了纽约大都会队的棒球运动员。对于每个球员来说,他的出场年限是按升序排列的。我需要为每个玩家提取他玩的第一年的数据,并将所有第一行放入一个新的数据框中。
在RStudio 我的Mac 上,我已经达到了对我需要的数据进行分组和排序的地步。这是一个示例。
playerID,yearID,G,AB,R,H
aceveju01,1997,25,6,0,0
acostma01,2010,41,0,0,0
acostma01,2011,44,0,0,0
acostma01,2012,45,0,0,0
adkinjo01,2007,1,0,0,0
agbaybe01,1998,11,15,1,2
agbaybe01,1999,101,276,42,79
agbaybe01,2000,119,350,59,101
agbaybe01,2001,91,296,28,82
ageeto01,1968,132,368,30,80
ageeto01,1969,149,565,97,153
ageeto01,1970,153,636,107,182
ageeto01,1971,113,425,58,121
ageeto01,1972,114,422,52,96
aguilch01,2008,8,12,0,2
出于测试目的,我从这段代码开始,而不是piping。这就是我所能达到的程度。
Lahman_batting18 <- read.csv('Batting-copy.csv', header = TRUE, stringsAsFactors=FALSE)
Lahman_batting18s <- select(Lahman_batting18,playerID:SO)
Lahman_batting18f <- filter(Lahman_batting18s,teamID == 'NYN')
Lahman_batting18fa <- arrange(Lahman_batting18f, playerID, yearID)
期望的输出:
playerID,yearID,G,AB,R,H
aceveju01,1997,25,6,0,0
acostma01,2010,41,0,0,0
adkinjo01,2007,1,0,0,0
agbaybe01,1998,11,15,1,2
ageeto01,1968,132,368,30,80
aguilch01,2008,8,12,0,2
感谢您的帮助!
【问题讨论】:
-
d[ave(1:NROW(d), d$playerID, FUN = seq_along) == 1,] -
@d.b.你的代码是如何工作的?
-
您好metsfan,如果可以解决您的问题,请您接受答案(答案旁边的勾号...)?然后它表明问题已解决。
-
Lahman_batting18 %>% group_by(playerID) %>% slice(1L) -
@RonakShah 使用 slice(1L) 和 slice(1) 有什么区别?
标签: r group-by subset data-manipulation