我想确定组间所有不重叠的值让我们使用iris
来说明。iris
数据集具有三种植物物种的萼片长度、萼片宽度、花瓣长度和花瓣宽度的测量值(setosa,versicolor,and virginica).所有三个种在萼片长度和宽度的测量上重叠.在花瓣长度和宽度的测量上,setosa 不与 versicolor 和 virginica 重叠。
使用各种函数(如范围值或散点图)可以轻松地手动可视化所需内容:
tapply(iris$Sepal.Length, INDEX = iris$Species, FUN = range)
tapply(iris$Sepal.Width, INDEX = iris$Species, FUN = range)
tapply(iris$Petal.Length, INDEX = iris$Species, FUN = range)
tapply(iris$Petal.Width, INDEX = iris$Species, FUN = range)
# or
library(ggplot2)
ggplot(iris, aes(Species, Sepal.Length)) + geom_point()
ggplot(iris, aes(Species, Sepal.Width)) + geom_point()
ggplot(iris, aes(Species, Petal.Length)) + geom_point()
ggplot(iris, aes(Species, Petal.Width)) + geom_point()
但是对于大型数据集来说,手工操作是不切实际的,所以我想写一个函数来识别像iris
这样的 Dataframe 中因子之间的非重叠值。输出可以是一个矩阵列表,TRUE或FALSE(分别表示非重叠和重叠),数据集中的每个变量对应一个矩阵。例如,iris
的输出将是一个包含4个矩阵的列表:
$1.Sepal.Length
setosa versicolor virginica
setosa NA FALSE FALSE
versicolor FALSE NA FALSE
virginica FALSE FALSE NA
$2.Sepal.Width
setosa versicolor virginica
setosa NA FALSE FALSE
versicolor FALSE NA FALSE
virginica FALSE FALSE NA
$3.Petal.Length
setosa versicolor virginica
setosa NA TRUE TRUE
versicolor TRUE NA FALSE
virginica TRUE FALSE NA
$4.Petal.Width
setosa versicolor virginica
setosa NA TRUE TRUE
versicolor TRUE NA FALSE
virginica TRUE FALSE NA
我接受不同输出的建议,只要它们标识所有不重叠的值。
1条答案
按热度按时间0lvr5msh1#
这是
tidyverse
内的一种可能的解决方案