使用 tidyr,如何通過分組和計算創建新列?
例如,如果我有這個資料框:
name <- c("a", "a", "a", "a", "b", "b", "b", "b")
x1 <- c(0, 0, 0, 0, 1, 1, 1, 1)
x2 <- c(15, 15, 15, 15, 15, 15, 15, 15)
y <- c(1, 2, 1, 2, 1, 2, 1, 2)
z <- c(50, 100, 40, 90, 65, 95, 40, 95)
df <- data.frame(name, x1, x2, y, z)
假設我想 (1) group-by x1and x2; (2) 找出該z組中的最大值;(3) 創建一個按該最大值z2標準化的新列。z

所以在這種情況下,預期的輸出z2是 c(0.5, 1, 0.4, 0.9, 0.684, 1, 0.421, 1)。
uj5u.com熱心網友回復:
我們可以簡單地按“x1”、“x2”分組并使用mutate
library(dplyr)
df <- df %>%
group_by(x1, x2) %>%
mutate(z2 = (z/max(z, na.rm = TRUE))) %>%
ungroup
-輸出
df
# A tibble: 8 × 6
name x1 x2 y z z2
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 a 0 15 1 50 0.5
2 a 0 15 2 100 1
3 a 0 15 1 40 0.4
4 a 0 15 2 90 0.9
5 b 1 15 1 65 0.684
6 b 1 15 2 95 1
7 b 1 15 1 40 0.421
8 b 1 15 2 95 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/525512.html
標籤:r蒂迪尔变异
下一篇:結合遷入遷出資料
