在 R 中创建二维网格或栅格,比较所有受访者和所有变量
Creating a 2D-grid or raster in R comparing all respondents with all variables
我的数据的可重现示例:
df_1 <- data.frame(cbind("Thriving" = c(2.33, 4.21, 6.37, 5.28, 4.87, 3.92, 4.16, 5.53), "Satisfaction" = c(3.45, 4.53, 6.01, 3.87, 2.92, 4.50, 5.89, 4.72), "Wellbeing" = c(2.82, 3.45, 5.23, 3.93, 6.18, 4.22, 3.68, 4.74), "id" = c(1:8)))
如您所见,它包括三个心理测量变量和一个标识符,其中每个受访者都有一个 id。
现在,我的目标是创建一个二维网格,通过它我可以很好地了解所有受访者关于每个变量的所有值。因此,在 x 轴上我将拥有所有受访者的 ID,在 y 轴上拥有所有变量,而特定字段的颜色取决于值 - 1 到 3 为红色,3 到 5 为黄色,5 到7 绿色 The style of the grid should be like this image.
到目前为止,我所取得的成就是以下代码,它将所有 variables/items 压缩到一列中,这样它们就可以一起描绘在 y 轴上——id 当然包含在它自己的列中作为是值:
df_1 %>%
select("Thr" = Thriving, "Stf" = Satisfaction, "Wb" = Wellbeing, "id" = id) %>%
na.omit %>%
gather(key = "variable", value = "value", -id) %>%
我正在寻找一种无需将数据存储在新框架中即可工作的解决方案。
此外,我正在寻找一种对 100 名或更多受访者以及最多约 40 个变量有用的解决方案。一个矩形是否非常小并不重要,我只是想有一个漂亮的色彩游戏,这将让人很好地了解组织可能在何处实现低或高 - 以及它是如何实现的。
感谢阅读,非常感谢任何帮助!
可能有更好的面向图形的方法,但您可以使用底图并将数据视为栅格来做到这一点:
library(raster)
df_1 <- cbind("Thriving" = c(2.33, 4.21, 6.37, 5.28, 4.87, 3.92, 4.16, 5.53), "Satisfaction" = c(3.45, 4.53, 6.01, 3.87, 2.92, 4.50, 5.89, 4.72), "Wellbeing" = c(2.82, 3.45, 5.23, 3.93, 6.18, 4.22, 3.68, 4.74), "id" = c(1:8))
r <- raster(ncol=nrow(df_1), nrow=3, xmn=0, xmx=8, ymn=0, ymx=3)
values(r) <- as.vector(as.matrix(df_1[,1:3]))
plot(r, axes=F, box=F, asp=NA)
axis(1, at=seq(-0.5, 8.5, 1), 0:9)
axis(2, at=seq(-0.5, 3.5, 1), c("", colnames(df_1)), las=1)
我的数据的可重现示例:
df_1 <- data.frame(cbind("Thriving" = c(2.33, 4.21, 6.37, 5.28, 4.87, 3.92, 4.16, 5.53), "Satisfaction" = c(3.45, 4.53, 6.01, 3.87, 2.92, 4.50, 5.89, 4.72), "Wellbeing" = c(2.82, 3.45, 5.23, 3.93, 6.18, 4.22, 3.68, 4.74), "id" = c(1:8)))
如您所见,它包括三个心理测量变量和一个标识符,其中每个受访者都有一个 id。
现在,我的目标是创建一个二维网格,通过它我可以很好地了解所有受访者关于每个变量的所有值。因此,在 x 轴上我将拥有所有受访者的 ID,在 y 轴上拥有所有变量,而特定字段的颜色取决于值 - 1 到 3 为红色,3 到 5 为黄色,5 到7 绿色 The style of the grid should be like this image.
到目前为止,我所取得的成就是以下代码,它将所有 variables/items 压缩到一列中,这样它们就可以一起描绘在 y 轴上——id 当然包含在它自己的列中作为是值:
df_1 %>%
select("Thr" = Thriving, "Stf" = Satisfaction, "Wb" = Wellbeing, "id" = id) %>%
na.omit %>%
gather(key = "variable", value = "value", -id) %>%
我正在寻找一种无需将数据存储在新框架中即可工作的解决方案。
此外,我正在寻找一种对 100 名或更多受访者以及最多约 40 个变量有用的解决方案。一个矩形是否非常小并不重要,我只是想有一个漂亮的色彩游戏,这将让人很好地了解组织可能在何处实现低或高 - 以及它是如何实现的。
感谢阅读,非常感谢任何帮助!
可能有更好的面向图形的方法,但您可以使用底图并将数据视为栅格来做到这一点:
library(raster)
df_1 <- cbind("Thriving" = c(2.33, 4.21, 6.37, 5.28, 4.87, 3.92, 4.16, 5.53), "Satisfaction" = c(3.45, 4.53, 6.01, 3.87, 2.92, 4.50, 5.89, 4.72), "Wellbeing" = c(2.82, 3.45, 5.23, 3.93, 6.18, 4.22, 3.68, 4.74), "id" = c(1:8))
r <- raster(ncol=nrow(df_1), nrow=3, xmn=0, xmx=8, ymn=0, ymx=3)
values(r) <- as.vector(as.matrix(df_1[,1:3]))
plot(r, axes=F, box=F, asp=NA)
axis(1, at=seq(-0.5, 8.5, 1), 0:9)
axis(2, at=seq(-0.5, 3.5, 1), c("", colnames(df_1)), las=1)