我需要您的帮助以R中的百分比重新缩放值,将相同处理的值表示为最大值的百分比。
例如,我有此输入
Value Level Treatment
5 1 A
7 2 A
10 4 A
14 1 B
20 2 B
18 4 B
30 1 C
30 2 C
28 4 C
我需要这个输出
Value Level Treatment
50 1 A
70 2 A
100 4 A
70 1 B
100 2 B
90 4 B
100 1 C
100 2 C
93.3 4 C
我想我可以开始
df <- read.table(header = TRUE, text = '
Value Level Treatment
50 1 A
70 2 A
100 4 A
70 1 B
100 2 B
90 4 B
100 1 C
100 2 C
93.3 4 C
')
tapply(df$Value, df$Treatment, max)
但是,我不知道如何进行。
有人会很乐意帮助我吗?我希望这对其他人也可能有用。
非常感谢。
感谢您的澄清。在这种情况下,使用会很容易dplyr
。
使用以下数据:
value <- c(5, 7, 10, 14, 20, 18, 30, 30, 28)
level <- c(1, 2, 4)
treatment <- c("A", "A", "A", "B", "B", "B", "C", "C", "C")
df <- data.frame(
value,
level,
treatment,
stringsAsFactors = FALSE
)
加载tidyverse
/ dplyr
:
library("tidyverse")
按治疗组分组,并根据以下各项依次计算:
df <- df %>%
group_by(treatment) %>%
mutate(value = value / max(value) * 100)
df
## Source: local data frame [9 x 3]
## Groups: treatment [3]
##
## value level treatment
## <dbl> <dbl> <chr>
## 1 50.00000 1 A
## 2 70.00000 2 A
## 3 100.00000 4 A
## 4 70.00000 1 B
## 5 100.00000 2 B
## 6 90.00000 4 B
## 7 100.00000 1 C
## 8 100.00000 2 C
## 9 93.33333 4 C
您可以根据自己的喜好进行格式化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句