R语言如何筛选含'ft'的单元格实现英尺转米且不改动其他单位数值
R语言批量匹配不同单位身高并统一转换为米的方案
核心需求实现:批量定位含ft的单元格
你可以直接使用R内置的grepl()函数做字符串模糊匹配,无需逐个指定单元格:
# 提取所有含'ft'的单元格的值 ft_values <- Data_original3$Height[grepl("ft", Data_original3$Height)] # 获取含'ft'的单元格的行索引 ft_index <- which(grepl("ft", Data_original3$Height))
全量单位统一转换代码
针对你提供的数据集,下面是完整的将三种单位统一转换为米的代码,适配你已经把英尺格式转换为x.y数值的前置处理:
library(stringr) library(dplyr) Data_original3 <- Data_original3 %>% mutate(Height_m = case_when( # 处理厘米单位:数值除以100 str_detect(Height, "_cm$") ~ as.numeric(str_remove(Height, "_cm")) / 100, # 处理米单位:直接提取数值 str_detect(Height, "_m$") ~ as.numeric(str_remove(Height, "_m")), # 处理英尺格式(已经转为x.y的形式) str_detect(Height, "^\\d+\\.?\\d*$") ~ { parts <- str_split_fixed(Height, "\\.", 2) ft <- as.numeric(parts[,1]) inch <- as.numeric(parts[,2]) # 1英尺=12英寸,1英尺=0.3048米 (ft + inch/12) * 0.3048 }, TRUE ~ NA_real_ ))
注意事项
如果你不需要修正英尺转米的计算逻辑,直接沿用你自己的转换规则替换对应分支的代码即可。
内容的提问来源于stack exchange,提问作者user17145868
相关产品推荐
相关产品推荐

