如何用R语言dplyr批量将多列开尔文温度转换为摄氏度?
批量将开尔文温度列转换为摄氏度(R dplyr实现)
针对你的需求,有几种简单方式实现批量转换:
1. 直接指定目标列名
如果你明确知道要转换的列(MaxTemp、MinTemp、MeanTemp),可以把它们放在向量里传给across的.cols参数:
DF %>% mutate(across(.cols = c(MaxTemp, MinTemp, MeanTemp), .fns = ~ .x - 273.15))
这里用公式语法~ .x - 273.15替代了原来的匿名函数,写法更简洁,效果完全一致。
2. 通过列名模式批量匹配
如果你的温度列都带有Temp关键词(比如以Temp结尾),可以用匹配函数自动选中这些列,不用手动列全:
# 匹配所有以"Temp"结尾的列 DF %>% mutate(across(.cols = ends_with("Temp"), .fns = ~ .x - 273.15)) # 或者匹配所有名称包含"Temp"的列(适合列名格式灵活的场景) DF %>% mutate(across(.cols = contains("Temp"), .fns = ~ .x - 273.15))
3. 保留原列并生成新列
如果需要保留原始的开尔文温度列,同时生成摄氏度列(添加后缀区分),可以使用.names参数:
DF %>% mutate(across(.cols = ends_with("Temp"), .fns = ~ .x - 273.15, .names = "{.col}_C"))
执行后会生成MaxTemp_C、MinTemp_C、MeanTemp_C这些新列,原列保持不变。
内容的提问来源于stack exchange,提问作者Sana
相关产品推荐
相关产品推荐

