我想知道在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
以你想要的任何单位。我不打扰转换或其他什么。我能够获得结果,但我很好奇是否有一个单行班。有什么建议?谢谢。
答案 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)