小编Tor*_*oro的帖子

自定义 Likert 图中条形图的宽度

我正在使用jbryer 的Likert 包,并希望使用堆积条形图来可视化数据。这些条形图的大小/宽度取决于图中有多少个条形图,即只有一个条形图时,条形图相当宽,而绘制的条形图越多,条形图就越细。

我想自定义设置条形的大小/宽度,以便无论图中绘制了多少个条形,它们都保持不变,即 l29_5 和 l29_2 的图的条形大小相同。

具有两个条形的李克特条形图

具有五个条形的李克特条形图

library(ggplot)
library(likert)    
data(pisaitems)

items29_5 <- pisaitems[,substr(names(pisaitems), 1,5) == 'ST25Q']
colnames(items29_5) <- c("Magazines", "Comic books", "Fiction", 
                    "Non-fiction books", "Newspapers")

items29_2 <-  items29_5 %>% 
  select("Magazines", "Comic books")


l29_5 <- likert(items29_5)
l29_2 <- likert(items29_2)

plot(l29_5)
plot(l29_2)
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 likert

5
推荐指数
1
解决办法
1895
查看次数

将列值与 dplyr::mutate 中的所有前导值进行比较

我有一个由单个向量/列组成的数据:

my_tibble <- tibble(score = c(1,2,3,4,9,8,7,6,5,4))
Run Code Online (Sandbox Code Playgroud)

对于 my_tibble$score 的每一行,我想计算与同一列中最大的“领先”元素的差异。这个新列应称为“差异”。例如,差异的第一行应为 1 - 9,而第五行应为 9 - 8,最后一行将变为 NA,因为没有值落后/低于 4。

最后,新的 tibble 应如下所示:

score | difference
<dbl>   <dbl>
1         -8
2         -7
3         -6
4         -5
9          1
8          1
7          1
6          1
5          1
4         NA
Run Code Online (Sandbox Code Playgroud)

我想使用 dplyr 来实现这一点,到目前为止已经尝试了许多 mutate 变体,例如

my_tibble %>%
 mutate(difference = score[which(score > score)])
Run Code Online (Sandbox Code Playgroud)

希望找到某种方式,使 which 函数中的第二个“分数”指代正在发生变异的当前行。然而,经过数小时的尝试和拼命在网上寻找解决方案后,我没有成功。

我发现的最接近的是dplyr: Summing nleading values,但是这仍然给我留下了一个问题,即我想要与所有主值的最大主值的差异,而不仅仅是最接近的 n 个主值。

非常感谢之前已回答或解决此问题的任何地方的帮助和/或转介!

r dplyr mutate

5
推荐指数
1
解决办法
117
查看次数

标签 统计

r ×2

dplyr ×1

ggplot2 ×1

likert ×1

mutate ×1

plot ×1