我想将列中的所有值除以特定行中的值。这是一些示例数据。
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,等等。
任何帮助将不胜感激。谢谢
答案 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, ]), `/`)