【问题标题】:Error, different numbers in replacement and data when creating a new column [closed]创建新列时出现错误,替换和数据中的不同数字[关闭]
【发布时间】:2017-06-26 19:29:45
【问题描述】:

我正在尝试在 R 中名为“batting”的数据框中计算棒球的 Slugging Percentage,该数据框架由 Sean Lahaman's Website 上的“Batting.csv”创建。

每个维基百科的 Slugging Percentage 公式如下: ([单打] + [双打 x 2] + [三连击 x 3] + [本垒打 x 4])/[击打]

(这基本上是总碱基除以蝙蝠数)。

这是我的 R 代码:

# Import batting data
batting <- read.csv('Batting.csv')

# Create X1B (Singles)
batting$X1B <- batting$H - batting$X2B - batting$X3B - batting$HR

# Create Slugging Average (SLG)
batting$SLG <- 
((1 * batting$x1B) + (2 * batting$X2B) + (3 * batting$X3B) + (4 * batting$HR)) / 
batting$AB

这是错误信息:

Error in `$<-.data.frame`(`*tmp*`, SLG, value = numeric(0)) : 
replacement has 0 rows, data has 97889

【问题讨论】:

  • 没有名为X2BX3B 的变量。
  • 你有一个错字:1 * batting$x1B 应该是1 * batting$X1B,大写为X。此外,当我下载数据时,它是batting$2B`` 而不是batting$X2B。确保变量名称正确且一致。
  • X1B or x1B,大写?

标签: r dataframe error-handling


【解决方案1】:

这行得通:

> batting$SLG = (batting$X1B + 2*batting$X2B + 3*batting$X3B + 4*batting$HR)/batting$AB
> summary(batting$SLG)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  0.000   0.176   0.309   0.290   0.398   4.000   15381 

在您的示例中,batting$x1B 中有一个小写的 x。确保如上所示大写。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2021-04-16
    相关资源
    最近更新 更多