将列中的所有值除以特定行中的值

时间:2020-10-29 01:19:55

标签: r

我想将列中的所有值除以特定行中的值。这是一些示例数据。

set.seed(123)
a <- sample(1:100, 6, replace = TRUE)
b <- sample(1:100, 6, replace = TRUE)
c <- sample(1:100, 6, replace = TRUE)
d <- sample(1:100, 6, replace = TRUE)
df <- data.frame(a,b,c,d)

df

> df
   a  b  c  d
1 31 50 69 99
2 79 43 91 72
3 51 14 57 26
4 14 25 92  7
5 67 90  9 42
6 42 91 93  9

我希望将每一列中的所有值除以该列第一行中的值。因此,“ a”列中的所有值均除以31,“ b”列中的所有值均除以50,“ c”列中的所有值均除以69,等等。

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您可以重复第一行nrow次并进行除法:

df/df[rep(1, nrow(df)), ]

#      a    b     c      d
#1 1.000 1.00 1.000 1.0000
#2 2.548 0.86 1.319 0.7273
#3 1.645 0.28 0.826 0.2626
#4 0.452 0.50 1.333 0.0707
#5 2.161 1.80 0.130 0.4242
#6 1.355 1.82 1.348 0.0909

您也可以使用sweep

sweep(df, 2, unlist(df[1, ]), `/`)