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

在R中如何基于另一数据框的数值计算并添加命名新列?

在R中为Destination数据框添加基于飞机型号的耗时列

完全可以实现,下面给你两种简单的方法,适合刚接触R的新手:

方法1:基础R循环实现(灵活适配任意数量的飞机型号)

这种方法不需要额外安装包,用R自带功能就能完成,而且如果以后飞机型号增加,代码不用大改:

首先建立飞机型号与速度的关联映射:

# 生成型号-速度的对应关系,方便后续调用
aircraft_speeds <- setNames(Aircraft$Speed, Aircraft$type)

然后循环每个飞机型号,计算耗时并添加为新列:

for (plane in names(aircraft_speeds)) {
  # 生成新列名:Time+型号
  new_col <- paste0("Time", plane)
  # 计算耗时:距离除以对应飞机的速度,添加到Destination中
  Destination[[new_col]] <- Destination$Distance / aircraft_speeds[[plane]]
}

运行后查看结果:

Destination

输出示例:

Location Distance     TimeX     TimeY    TimeZ
1        A       50 1.0000000 0.8333333 0.7142857
2        B      150 3.0000000 2.5000000 2.1428571
3        C      200 4.0000000 3.3333333 2.8571429
4        D      400 8.0000000 6.6666667 5.7142857

方法2:用tidyverse包实现(代码更简洁直观)

如果后续打算深入学习R数据处理,tidyverse系列包会很实用。先安装并加载dplyr包:

# 未安装过tidyverse的话先运行这行:
# install.packages("tidyverse")
library(dplyr)

直接用mutate函数添加新列:

Destination <- Destination %>%
  mutate(
    TimeX = Distance / Aircraft$Speed[Aircraft$type == "X"],
    TimeY = Distance / Aircraft$Speed[Aircraft$type == "Y"],
    TimeZ = Distance / Aircraft$Speed[Aircraft$type == "Z"]
  )

这种写法直接指定每一列的计算逻辑,新手更容易理解,缺点是如果飞机型号增多,需要手动添加对应行的计算代码。

补充说明

R支持向量与标量的运算:Destination$Distance是长度为4的向量,除以单个速度值(标量)时,会自动让每个距离值都除以该速度,刚好满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:01:14