将两列替换为仅有一列代表另外两列的函数

时间:2015-01-27 10:42:45

标签: r dataframe

我想知道在R base中是否有一个单行代码命令来替换矩阵的两列或只有一列的数据帧,这些列表示应用于要替换的两列的数学函数的结果。例如,假设我有这个数据框:

> vehicle = c("bike", "car", "train", "pork")
> time = c(25,35,20,5)
> distance = c(3.2,5.4,4,8.9)
> df = data.frame(vehicle,time,distance)
> df
  vehicle time distance
1    bike   25      3.2
2     car   35      5.4
3   train   20      4.0
4    pork    5      8.9

我想根据时间和距离列(df$distance/df$time)计算每辆车的速度替换最后两列,以便最终结果为:

> df
  vehicle     speed
1    bike 0.1280000
2     car 0.1542857
3   train 0.2000000
4    pork 1.7800000

以你想要的任何单位。我不打扰转换或其他什么。我能够获得结果,但我很好奇是否有一个单行班。有什么建议?谢谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试

data.frame(vehicle=df$vehicle, speed=df$distance/df$time)

或使用transform/within等并删除“时间”,“距离”列

transform(df, speed=distance/time)[-c(2:3)]

另一种选择是使用transmute

中的dplyr
library(dplyr)
transmute(df,vehicle=vehicle, speed=distance/time)