提问人:Biomol 提问时间:4/15/2023 最后编辑:Biomol 更新时间:4/15/2023 访问量:41
R 中同一列内的成对比较
Pairwise comparisons within the same column in R
问:
我有一定的响应变量(生物量),我正在分析从不同论文中检索到的一系列环境条件。
示例数据集:
纸 | 生物量 | 条件 |
---|---|---|
小一 | 10 | 控制 |
小一 | 5 | 物种1 |
小一 | 0 | 物种1 |
小二 | 2 | 控制 |
小二 | 4 | 物种4 |
小二 | 6 | 物种4 |
小三 | 2 | 控制 |
小三 | 2 | 物种1 |
小三 | 8 | 物种2 |
小三 | 6 | 物种3 |
小三 | 7 | 物种4 |
小三 | 2 | 物种5 |
小四 | 3 | 控制 |
小四 | 1 | 物种6 |
对于每篇论文,我想专门划分每个物种的生物量结果以进行对照。例如,对于 P1(论文 1),我想将每个物种的生物量结果除以 (/) 用于对照。
示例输出(我在这里使用了随机数值结果):
纸 | 比较 | Biomass_results |
---|---|---|
小一 | 对照与物种1 | 5 |
小二 | 对照与物种4 | 4 |
小三 | 对照与物种1 | 2 |
小三 | 对照与物种2 | 6 |
小三 | 对照与物种3 | 7 |
小三 | 对照与物种4 | 3 |
小三 | 对照组与物种5 | 2 |
小四 | 对照与物种6 | 1 |
有什么建议吗?
我尝试使用 tidyverse,但没有成功。
答:
0赞
Andre Wildberg
4/15/2023
#1
这可能会产生预期的结果。
首先是 Species,然后构造 Comparison 字符串,最后进行除法和最终结果。sum
filter
library(dplyr)
df %>%
summarize(Biomass_sum = sum(Biomass), .by = c(Paper, Condition)) %>%
mutate(Comparison = paste("Control vs", Condition),
Biomass_results = Biomass_sum /
Biomass_sum[Comparison == "Control vs Control"], .by = Paper) %>%
filter(Comparison != "Control vs Control") %>%
select(-c(Biomass_sum, Condition))
Paper Comparison Biomass_results
1 P1 Control vs Species1 0.5000000
2 P2 Control vs Species4 5.0000000
3 P3 Control vs Species1 1.0000000
4 P3 Control vs Species2 4.0000000
5 P3 Control vs Species3 3.0000000
6 P3 Control vs Species4 3.5000000
7 P3 Control vs Species5 1.0000000
8 P4 Control vs Species6 0.3333333
数据
df <- structure(list(Paper = c("P1", "P1", "P1", "P2", "P2", "P2",
"P3", "P3", "P3", "P3", "P3", "P3", "P4", "P4"), Biomass = c(10L,
5L, 0L, 2L, 4L, 6L, 2L, 2L, 8L, 6L, 7L, 2L, 3L, 1L), Condition = c("Control",
"Species1", "Species1", "Control", "Species4", "Species4", "Control",
"Species1", "Species2", "Species3", "Species4", "Species5", "Control",
"Species6")), class = "data.frame", row.names = c(NA, -14L))
上一个:如何同时订购两列
下一个:数据整理扩大和整合行
评论