R 镶嵌面_包裹的成对数据
假设我有下面的数据R 镶嵌面_包裹的成对数据,r,ggplot2,dplyr,R,Ggplot2,Dplyr,假设我有下面的数据foo。每行包含一个物种的测量(y),并且每个物种与另一个(species.pair)配对。因此,在下面的示例中,物种a与e配对,b与f配对,依此类推。每个物种的观察次数各不相同。我想画出每个物种的分布密度,以及它的伙伴在自己方面的分布。下面我用列sppPairs手工编码了这个。物种都是唯一的,并且每个物种在物种对中都有一个匹配项。我不确定如何制作下面的分组列sppPairs。我确信有一些聪明的方法可以用{dplyr}实现这一点,但我不知道该怎么做。某种类型的粘贴物种到物种。我
foo
。每行包含一个物种的测量(y
),并且每个物种与另一个(species.pair
)配对。因此,在下面的示例中,物种a
与e
配对,b
与f
配对,依此类推。每个物种的观察次数各不相同。我想画出每个物种的分布密度,以及它的伙伴在自己方面的分布。下面我用列sppPairs
手工编码了这个。物种
都是唯一的,并且每个物种在物种对中都有一个匹配项。我不确定如何制作下面的分组列sppPairs
。我确信有一些聪明的方法可以用{dplyr}
实现这一点,但我不知道该怎么做。某种类型的粘贴物种
到物种。我想是成对的吧?非常感谢您的帮助
foo <- data.frame(species = rep(letters[1:8],each=10),
species.pair = rep(letters[c(5:8,1:4)],each=10),
y=rnorm(80))
# species and species pair match exactly
all(unique(foo$species) %in% unique(foo$species.pair))
# what I want
foo$sppPairs <- c(rep("a:e",10),
rep("b:f",10),
rep("c:g",10),
rep("d:h",10),
rep("a:e",10),
rep("b:f",10),
rep("c:g",10),
rep("d:h",10))
p1 <- ggplot(foo,aes(y,fill=species))
p1 <- p1 + geom_density(alpha=0.5)
p1 <- p1 + facet_wrap(~sppPairs)
p1
foo是的,您可以在适当的列上使用apply
将排序后的元素按正确的顺序粘贴在一起(否则a:e与e:a不同,以此类推,最终得到8个组而不是4个组):
库(ggplot2)
太好了。谢谢