我有一個育種生產力資料集:
df1
# Nest.box Obs.type individual.number Clutch
# 1 Nest1 Egg 1 First
# 2 Nest1 Egg 2 First
# 3 Nest1 Egg 3 First
# 4 Nest2 Egg 1 First
# 5 Nest2 Egg 2 First
# 6 Nest2 Egg 1 First
# 7 Nest1 Chick 1 First
# 8 Nest1 Chick 2 First
# 9 Nest2 Chick 1 First
# 10 Nest2 Chick 2 First
# 11 Nest2 Chick 1 Second
# 12 Nest2 Chick 2 Second
我想通過Nest.box和Clutch聚合來總結這些資料(顯示雞蛋的最大數量,nest.box 的最大小雞數量,離合器)
想要的輸出將是這樣的:
output
# Nest.box Clutch Eggs Chicks
# 1 Nest1 First 3 2
# 2 Nest2 First 2 2
# 3 Nest2 Second NA 2
uj5u.com熱心網友回復:
Tidyverse 方法將是
df %>% group_by(Nest.box, Clutch, Obs.type) %>%
summarise(max = max(individual.number)) %>%
pivot_wider(id_cols = 1:2, names_from = Obs.type, values_from = max)
# A tibble: 3 x 4
# Groups: Nest.box, Clutch [3]
Nest.box Clutch Chick Egg
<chr> <chr> <dbl> <dbl>
1 Nest1 First 2 3
2 Nest2 First 2 2
3 Nest2 Second 2 NA
uj5u.com熱心網友回復:
這都可以在tidyr::pivot_wider()data.frames 內完成:
library(tidyr)
df1 %>%
pivot_wider(
id_cols = c(Nest.box, Clutch),
names_from = Obs.type,
values_from = individual.number,
values_fn = max
)
#> # A tibble: 3 × 4
#> Nest.box Clutch Egg Chick
#> <chr> <chr> <dbl> <dbl>
#> 1 Nest1 First 3 2
#> 2 Nest2 First 2 2
#> 3 Nest2 Second NA 2
由reprex 包于 2022-04-01 創建(v2.0.1)
資料
df1 <-
tibble::tribble(
~Nest.box, ~Obs.type, ~individual.number, ~Clutch,
"Nest1", "Egg", 1, "First",
"Nest1", "Egg", 2, "First",
"Nest1", "Egg", 3, "First",
"Nest2", "Egg", 1, "First",
"Nest2", "Egg", 2, "First",
"Nest2", "Egg", 1, "First",
"Nest1", "Chick", 1, "First",
"Nest1", "Chick", 2, "First",
"Nest2", "Chick", 1, "First",
"Nest2", "Chick", 2, "First",
"Nest2", "Chick", 1, "Second",
"Nest2", "Chick", 2, "Second"
)
uj5u.com熱心網友回復:
data.table解決方案
library(data.table)
setDT(df)[, .(Eggs = uniqueN(individual.number[Obs.type == "Egg"]),
Chicks = uniqueN(individual.number[Obs.type == "Chick"])),
by = .(Nest.box, Clutch)]
# Nest.box Clutch Eggs Chicks
# 1: Nest1 First 3 2
# 2: Nest2 First 2 2
# 3: Nest2 Second 0 2
編輯
還有一種可能:轉換為寬格式
dcast(setDT(df), Nest.box Clutch ~ Obs.type, value.var = "individual.number", fun.aggregate = uniqueN)
# Nest.box Clutch Chick Egg
# 1: Nest1 First 2 3
# 2: Nest2 First 2 2
# 3: Nest2 Second 2 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454425.html
上一篇:如何重新定位原始列旁邊的變異列?
