将每列除以R中的列

bsh*_*141 2 r

我有以下数据框:

df <- data.frame(type = c("planes", "trains", "automobiles"), t1 = c(4, 5, 6), t2 = c(20, 60, 24), t3 = c(100, 120, 72), t4 = c(800, 360, 144))

 df
         type t1 t2  t3  t4
1      planes  4 20 100 800
2      trains  5 60 120 360
3 automobiles  6 24  72 144
Run Code Online (Sandbox Code Playgroud)

我想编写一个函数,它接受每列中的值并将它们除以前一列,从t2/t1开始,这样我得到一个如下所示的新数据框:

new_df
         type t1 t2 t3 t4
1      planes     5  5  8
2      trains    12  2  3
3 automobiles     4  3  2
Run Code Online (Sandbox Code Playgroud)

使用扫描功能可能有一种方法可以做到这一点,但我还没有找到它.

提前致谢!

raw*_*awr 5

df[, 3:5] <- df[, 3:5] / df[, 2:4]

#          type t1 t2 t3 t4
# 1      planes  4  5  5  8
# 2      trains  5 12  2  3
# 3 automobiles  6  4  3  2
Run Code Online (Sandbox Code Playgroud)

Map 也会有用

df[, 3:5] <- Map('/', df[, 3:5], df[, 2:4])

#          type t1 t2 t3 t4
# 1      planes  4  5  5  8
# 2      trains  5 12  2  3
# 3 automobiles  6  4  3  2
Run Code Online (Sandbox Code Playgroud)