You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何对内置women数据集多列进行单位转换?

解决方法

一、把你的转换函数应用到数据集列上

你已经写好了转换函数,有两种简单的方式把它们用到tibble的列上:

Base R 写法

直接对新列赋值,调用你的函数:

w <- as_tibble(women)

in2cm <- function(length) {
  cm <- length / 2.54
  return(cm)
}
lbs2kg <- function(mass) {
  kg <- mass * 0.45
  return(kg)
}

# 应用函数生成新列
w$height_cm <- in2cm(w$height)
w$weight_kg <- lbs2kg(w$weight)

dplyr 写法(更符合tidyverse风格)

因为你用了as_tibble,推荐用dplyr的mutate函数来添加转换后的列:

library(dplyr)
w <- as_tibble(women)

in2cm <- function(length) {
  cm <- length / 2.54
  return(cm)
}
lbs2kg <- function(mass) {
  kg <- mass * 0.45
  return(kg)
}

# 用mutate批量生成新列
w <- w %>% 
  mutate(height_cm = in2cm(height),
         weight_kg = lbs2kg(weight))

二、更优的单位转换方法

1. 跳过自定义函数,直接计算(最简洁)

如果只是简单的单位转换,没必要单独写函数,直接在mutate里写转换公式即可,还能减少代码量:

library(dplyr)
w <- as_tibble(women) %>% 
  mutate(height_cm = height / 2.54,
         # 注意:磅转千克的准确系数是0.453592,比你用的0.45更精准
         weight_kg = weight * 0.453592)

2. 用units包规范处理单位

如果需要严格管理数据的单位属性,避免转换错误,可以用units包,它能自动处理单位转换,还能保留单位信息:

install.packages("units") # 首次使用先安装
library(units)
library(dplyr)

w <- as_tibble(women) %>% 
  # 给原始列添加单位属性
  mutate(height = set_units(height, inch),
         weight = set_units(weight, pound)) %>% 
  # 直接转换单位,自动计算系数
  mutate(height_cm = set_units(height, cm),
         weight_kg = set_units(weight, kg))

用这个方法后,列会带有单位标记,后续计算也能自动识别单位,避免出错。

内容的提问来源于stack exchange,提问作者bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:35:29