【问题标题】:How do you clean a column with mixed height units in r你如何清理 r 中混合高度单位的列
【发布时间】:2022-11-30 20:39:55
【问题描述】:

我的数据框中有一列来自一项调查,其中有两个不同的单位。我需要删除这些并将信息转换为一致的单位,即所有 cm 的列而没有单位。

这是一些示例数据

df <- data.frame(v1 = c('100 cm', '6 foot 10', '200 cm', '5 foot 11')

我尝试使用此 readr::parse_number(df$v1) 但这会将“6 英尺 10”变成 6。我不确定它是否有用,因为我仍然需要将记录为英尺和英寸的高度转换为厘米

【问题讨论】:

    标签: r data-cleaning


    【解决方案1】:

    这可能不是最优雅的解决方案,但您可以将 '6 foot 10' 更改为 '6*30.48 + 2.54*10'(将#feet 和#inches 乘以它们的转换率)使用stringr::str_replace_all,然后将这些字符串评估为带有eval + parse 的表达式(具有类似sapplypurrr::map 的映射函数,因为这些函数没有向量化)。

    library(tidyverse)
    df$v1 = df$v1 %>%
      str_replace_all(c(" cm" = "", " foot " = "*30.48 + 2.54*")) %>%
      map_dbl(~ parse(text = .x) %>% eval())
    
    > [1] 100.00 208.28 200.00 180.34
    

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 2021-02-03
      • 2020-02-24
      相关资源
      最近更新 更多