R:添加条件观察计数的列

时间:2019-05-05 21:40:26

标签: r

我希望在数据中添加一列,以列出数据集中观测值的单个计数。我有关于NBA球队及其每场比赛的数据。它们按日期列出,我想创建一列,列出每个团队每个赛季在每个赛季中的#号。

我的数据如下:

# gmDate         teamAbbr opptAbbr    id 
# 2012-10-30     WAS       CLE      2012-10-30WAS
# 2012-10-30     CLE       WAS       2012-10-30CLE
# 2012-10-30     BOS       MIA       2012-10-30BOS

逗号分隔各列

我尝试使用“ add_count”,但这为我提供了每个团队在数据集中总共玩过的游戏数量。

先前尝试:

nba_box %>% add_count()

我希望添加的列显示每个球队的比赛数(1-82),但现在它显示数据集中的比赛总数(82)。

1 个答案:

答案 0 :(得分:0)

这是一个基本的R示例,它从for循环的角度解决问题。假设一个团队可以是任一列,我们通过unlist数据并使用table函数对前面的行求和来跟踪团队的位置。

# intialize some fake data
test <- as.data.frame(t(replicate(6, sample( LETTERS[1:3],2))),
                      stringsAsFactors = F)
colnames(test) <- c("team1","team2")

# initialize two new columns
test$team2_gamenum <- test$team1_gamenum <- NA
count <- NULL
for(i in 1:nrow(test)){
  out <- c(count, table(unlist(test[i,c("team1","team2")])))
  count <- table(rep(names(out), out)) # prob not optimum way of combining two table results
  test$team1_gamenum[i] <- count[which(names(count) == test[i,1])]
  test$team2_gamenum[i] <- count[which(names(count) == test[i,2])]
}
test
#  team1 team2 team1_gamenum team2_gamenum
#1     B     A             1             1
#2     A     C             2             1
#3     C     B             2             2
#4     C     B             3             3
#5     A     C             3             4
#6     A     C             4             5