首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中由Ft (6-1)转换为英寸(73)

R中由Ft (6-1)转换为英寸(73)
EN

Stack Overflow用户
提问于 2020-11-14 21:35:55
回答 2查看 1.3K关注 0票数 2

我正试着把一列脚转换成英寸。通常是简单的乘法,但当格式分别为(5-10)或(6-2)为70英寸和74英寸时,我对如何转换感到困惑。到目前为止这是我的密码。我想要改变combine.data$Ht

代码语言:javascript
复制
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")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-15 01:17:47

您可以将Ht列拆分为两个单独的列feetinches,然后执行计算以计算身高。

代码语言:javascript
复制
library(dplyr)
library(tidyr)

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

Stack Overflow用户

发布于 2020-11-14 21:40:35

一个选项是在将conv_unit列转换为numeric后从measurements使用character

代码语言:javascript
复制
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

或者只使用base R

代码语言:javascript
复制
f1 <- function(x) {
        x1 <- as.numeric(sub("-.*", "", x))
        x2 <- as.numeric(sub(".*-", "", x))
        (x1 * 12) + x2
 }
combine.data$Ht <- f1(combine.data$Ht)
head(combine.data$Ht)
#[1] 69 71 72 71 69 74
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64838855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档