将高度从英尺(6-1)转换为英寸(73)英寸(R)

将高度从英尺(6-1)转换为英寸(73)英寸(R),r,dataframe,web-scraping,type-conversion,R,Dataframe,Web Scraping,Type Conversion,我正在尝试将一列英尺转换为英寸。通常它是简单的乘法,但是当格式分别为(5-10)或(6-2)的70和74英寸时,我对如何转换感到困惑。这是到目前为止我的代码。我正在尝试更改combine.data$Ht library(rvest) library(magrittr) library(dplyr) library(purrr) years <- 2010:2020 urls <- paste0( 'https://www.pro-football-reference.com/

我正在尝试将一列英尺转换为英寸。通常它是简单的乘法,但是当格式分别为(5-10)或(6-2)的70和74英寸时,我对如何转换感到困惑。这是到目前为止我的代码。我正在尝试更改
combine.data$Ht

library(rvest)
library(magrittr)
library(dplyr)
library(purrr)

years <- 2010:2020

urls <- paste0(
  'https://www.pro-football-reference.com/draft/',
  years,
  '-combine.htm')

combine.data <- map(
  urls,
  ~read_html(.x) %>% 
    html_nodes(".stats_table") %>% 
    html_table() %>% 
    as.data.frame()
) %>%
  set_names(years) %>% 
  bind_rows(.id = "year") %>% 
  filter(Pos == 'CB' | Pos == "S")
库(rvest)
图书馆(magrittr)
图书馆(dplyr)
图书馆(purrr)
年%
as.data.frame()
) %>%
设置名称(年份)%>%
绑定行(.id=“year”)%>%
过滤器(位置=‘CB’|位置=‘S’)

字符
列转换为
数值

library(measurements)
f1 <- function(x) {
        x1 <- as.numeric(sub("-.*", "", x))
        x2 <- as.numeric(sub(".*-", "", x))
        conv_unit(x1, "ft", "inch") + x2
 }
  
combine.data$Ht <- f1(combine.data$Ht)
head(combine.data$Ht)
#[1] 69 71 72 71 69 74
f1('5-11')
#[1] 71

             

您可以将
Ht
列拆分为两个单独的列
feet
inches
,然后执行计算以英尺为单位计算高度

library(dplyr)
library(tidyr)

combine.data %>%
  separate(Ht,c('feet', 'inches'), sep = '-', convert = TRUE, remove = FALSE) %>%
  mutate(feet = 12*feet + inches) %>%
  select(-inches)

这适用于6-0这样的数字,但不适用于5-11这样的数字。例如,5-11岁的球员应该是71英寸,而不是61.32英寸。有什么建议吗?@njmcd请查看更新。现在应该可以了
library(dplyr)
library(tidyr)

combine.data %>%
  separate(Ht,c('feet', 'inches'), sep = '-', convert = TRUE, remove = FALSE) %>%
  mutate(feet = 12*feet + inches) %>%
  select(-inches)