【问题标题】:Converting units (cm to in) for some observations in R [duplicate]为 R 中的一些观察值转换单位(cm 到 in)[重复]
【发布时间】:2021-11-24 13:59:36
【问题描述】:

我有一个数据集,其中一些观察值以厘米为单位,一些以英寸为单位。我需要将所有值转换为英寸。数字在一列,单位在另一列。

height   unit
12.0       in
15.0       in
45.0       cm
13.0       in
52.0       cm
61.0       cm

基本上我只希望它们都以英寸为单位。我应该使用某种 if 语句,还是将单位为 cm 的数据子集?感谢您的帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    在 R 基数 1 中:

    > dat$height[dat$unit=="cm"] <- dat$height[dat$unit=="cm"]*0.393701
    > dat$unit <- "in"
    > dat
        height unit
    1 12.00000   in
    2 15.00000   in
    3 17.71654   in
    4 13.00000   in
    5 20.47245   in
    6 24.01576   in
    

    R 基 2:

    dat$height <- with(dat, ifelse(unit == "cm", height * 0.393701, height))
    

    使用 dplyr 更具可读性:

    library(dplyr)
    dat <- dat %>% 
        mutate(height = if_else(unit == "cm", height * 0.393701, height))
    

    【讨论】:

      【解决方案2】:
      dt <- data.table(
        height = c(12.0, 15.0, 45.0, 13.0, 52.0, 61.0),
        unit = c("in", "in", "cm", "in", "cm", "cm")
      )
      
      dt[, height_in_inches := ifelse(unit == "cm", height / 2.54, height)]
      
      dt
      #    height unit height_in_inches
      # 1:     12   in           12.000
      # 2:     15   in           15.000
      # 3:     45   cm           17.717
      # 4:     13   in           13.000
      # 5:     52   cm           20.472
      # 6:     61   cm           24.016
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 2018-04-26
        • 2019-03-15
        • 1970-01-01
        • 2020-09-05
        相关资源
        最近更新 更多