我试图从拉曼数据库中查看1903年到1960年之间的棒球数据。我这样做是为了自己的研究。我想使用击球表格,其中不包括击球平均数,拍击,OBP或OPS。
我想计算这些,但是我首先需要获得总基数。我无法让程序计算X2B和X3B的总基数。
我已经尝试过使用as.numeric,但是无法正常工作。这是使用R和R工作室。我曾尝试在X2B和X3B的双引号和三引号周围加上引号,而没有引号。
batting_1960 <- batting_1903 %>%
filter(yearID <= 1960 & G >= 90) %>%
mutate(Batting_Average = H/AB, TB = (2*"X2B")+(3*"X3B")+HR+(H-"X2B"-"X3B"-HR)) %>%
arrange(yearID, desc(Batting_Average))
我希望对于每一行数据,总基数都将在新列中计算出来,但出现错误:
Error in 2 * "X2B" : non-numeric argument to binary operator
这样一来,我就可以最终计算出OPS,OBP和击打。
答案 0 :(得分:0)
您的代码正试图通过文字字符串"X2B"
来使2成为异常,这将不起作用。列名应在mutate()
中不加引号。
您的错误:
> tibble(X2B = 1:10) %>% mutate(TB = 2 * "X2B")
Error in 2 * "X2B" : non-numeric argument to binary operator
应为例如
> tibble(X2B = 1:10) %>% mutate(TB = 2 * X2B)
# A tibble: 10 x 2
X2B TB
<int> <dbl>
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
9 9 18
10 10 20