我有一个数据帧,看起来像这样:
家庭
|
订购
|
等级
|
出席情况
|
年份
|
网站
|
地点
|
拉特
|
长
|
蜓科
|
奥多纳塔
|
昆虫a
|
0
|
2021
|
KAV01
|
美国国家航空航天局
|
-17.4
|
18.5
|
蜓科
|
奥多纳塔
|
昆虫a
|
0
|
2023
|
KAV01
|
美国国家航空航天局
|
-17.4
|
18.5
|
蜓科
|
奥多纳塔
|
昆虫a
|
1.
|
2021
|
KAV02
|
美国国家航空航天局
|
-17.7
|
18.7
|
蜓科
|
奥多纳塔
|
昆虫a
|
0
|
2023
|
KAV02
|
美国国家航空航天局
|
-17.7
|
18.7
|
蜓科
|
奥多纳塔
|
昆虫a
|
0
|
2021
|
KAV03
|
美国国家航空航天局
|
-17.8
|
19.1
|
蜓科
|
奥多纳塔
|
昆虫a
|
0
|
2023
|
KAV03
|
美国国家航空航天局
|
-17.8
|
19.1
|
有许多独特的家族,我的存在值为0和1,但家族值没有完全覆盖。也就是说,并非所有族值都指定了0或1的存在值。让我进一步解释,在所有数据集中,有一个唯一的家庭数量=100,但KAV03站点的存在/不存在值为90。我想要的是确保剩下的10个家庭也在场,当然,在场值为0。随着数据的扩展,我还想保持其余变量的原样。
我希望我解释得足够好,如果你需要更多信息,请告诉我。以下是我尝试过但失败的代码:
MorphoData <- expand.grid(
Site = unique(MorphoData$Site),
Family = unique(MorphoData$Family),
Year = unique(MorphoData$Year)
) %>%
left_join(MorphoData, by = c("Site", "Family", "Year")) %>%
group_by(Site, Family, Year) %>%
mutate(
Presence = replace_na(Presence, 0) # Ensure missing Presence values are 0
) %>%
group_by(Site, Year) %>%
fill(everything(.), .direction = "downup") %>% # Fill missing taxonomy/spatial data
ungroup()
以下是一个假设的例子:
data <- data_frame(Site = c("KAV01", "KAV01", "KAV01", "KAV01", "KAV01", "KAV01", "KAV01",
"KAV02", "KAV02", "KAV02", "KAV02", "KAV02", "KAV02", "KAV02",
"KAV03", "KAV03", "KAV03", "KAV03", "KAV03", "KAV03", "KAV03"),
Family = sample(c("Fam1", "Fam2", "Fam3", "Fam4", "Fam5", "Fam6"), 21, replace = TRUE),
Year = sample(c(2021, 2022, 2023), 21, replace = TRUE),
Presence = sample(c(0, 1), 21, , replace = TRUE),
Lon = rnorm(n = 21, mean = 5, sd = 1),
Lat = rnorm(n = 21, mean = 2, sd = 0.3))
你会发现,这些网站不会对所有家庭都有价值。我希望给定站点中未包含的家庭的存在值为0。
非常感谢。