Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 镶嵌面_包裹的成对数据_R_Ggplot2_Dplyr - Fatal编程技术网

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)

太好了。谢谢