R:创建李克特比例条形图
R: creating a likert scale barplot
我是 R 的新手,感觉有点迷茫……我正在处理一个包含 7 个李克特等级答案的数据集。
例如,我的数据如下所示:
我的目标是创建一个条形图,在 x-lab 上显示李克特刻度,在 y-lab 上显示频率。
到目前为止我的理解是,我首先必须将我的数据转换为频率 table。为此,我使用了在本网站的另一个 post 中找到的代码:
data <- factor(data, levels = c(1:7))
table(data)
但是我总是得到这个输出:
data
1 2 3 4 5 6 7
0 0 0 0 0 0 0
有什么想法哪里出了问题或有其他想法可以实现我的计划吗?
非常感谢!
洛雷娜
这是处理您的问题的一种非常简单的方法,仅使用 base-R
## your data
my_obs <- c(4,5,3,4,5,5,3,3,3,6)
## use a factor for class data
## you could consider making it ordered (ordinal data)
## which makes sense for Likert data
## type "?factor" in the console to see the documentation
my_factor <- factor(my_obs, levels = 1:7)
## calculate the frequencies
my_table <- table(my_factor)
## print my_table
my_table
# my_factor
# 1 2 3 4 5 6 7
# 0 0 4 2 3 1 0
## plot
barplot(my_table)
生成以下简单条形图:
请告诉我这是否是您想要的
洛丽娜!
首先,不需要在您显示的数据集中应用 factor() 和 table()。据我所知,它看起来不错。
R 带有一些有趣的绘图选项,hist() 就是其中之一。
带 hist() 的直方图
在以下示例中,我将使用数据集中命名的 "Valenz" 变量。
不需要美化就可以得到频率,你可以简单地问:
hist(dataset, Valenz)
第一个参数(数据集)通知这些值在哪里;第二个参数 (Valenz) 告知 您要使用 数据集 中的哪个 值。
如果你只想知道频率,而不必以某种优雅的方式告知它,那应该这样做 (:
带 ggplot() 的直方图
如果你想让它更漂亮,你可以使用 ggplot2 包来设计你的绘图,这是 R 中最常用的包之一。
首先,安装然后加载包。
install.packages("ggplot2")
library(ggplot2)
然后,创建一个直方图,其中 x 作为某个分数出现的次数。
ggplot(dataset, aes(x = Valenz)) +
geom_histogram(bins = 7, color = "Black", fill = "White") +
labs(title = NULL, x = "Name of my variable", y = "Count of 'Variable'") +
theme_minimal()
- ggplot() 获取数据帧的值,然后 aes() 指定您希望 Valenz 在 x 轴上。
- geom_histogram() 为您提供 "bins = 7" 的直方图(7 个选项,因为它是李克特量表),以及 "color = 'Black'" 和 "fill = 'White'" 的条形图。
- labs() 指定出现在 x("x = " 我的变量的名称”)下方的标签,然后是 y(y = "Count of 'Variable'")下方的标签。
- theme_minimal()让剧情看起来更酷
我希望我以某种方式帮助了你,Lorena。 (:
我是 R 的新手,感觉有点迷茫……我正在处理一个包含 7 个李克特等级答案的数据集。
例如,我的数据如下所示:
我的目标是创建一个条形图,在 x-lab 上显示李克特刻度,在 y-lab 上显示频率。
到目前为止我的理解是,我首先必须将我的数据转换为频率 table。为此,我使用了在本网站的另一个 post 中找到的代码:
data <- factor(data, levels = c(1:7))
table(data)
但是我总是得到这个输出:
data
1 2 3 4 5 6 7
0 0 0 0 0 0 0
有什么想法哪里出了问题或有其他想法可以实现我的计划吗?
非常感谢! 洛雷娜
这是处理您的问题的一种非常简单的方法,仅使用 base-R
## your data
my_obs <- c(4,5,3,4,5,5,3,3,3,6)
## use a factor for class data
## you could consider making it ordered (ordinal data)
## which makes sense for Likert data
## type "?factor" in the console to see the documentation
my_factor <- factor(my_obs, levels = 1:7)
## calculate the frequencies
my_table <- table(my_factor)
## print my_table
my_table
# my_factor
# 1 2 3 4 5 6 7
# 0 0 4 2 3 1 0
## plot
barplot(my_table)
生成以下简单条形图:
请告诉我这是否是您想要的
洛丽娜!
首先,不需要在您显示的数据集中应用 factor() 和 table()。据我所知,它看起来不错。
R 带有一些有趣的绘图选项,hist() 就是其中之一。
带 hist() 的直方图
在以下示例中,我将使用数据集中命名的 "Valenz" 变量。
不需要美化就可以得到频率,你可以简单地问:
hist(dataset, Valenz)
第一个参数(数据集)通知这些值在哪里;第二个参数 (Valenz) 告知 您要使用 数据集 中的哪个 值。
如果你只想知道频率,而不必以某种优雅的方式告知它,那应该这样做 (:
带 ggplot() 的直方图
如果你想让它更漂亮,你可以使用 ggplot2 包来设计你的绘图,这是 R 中最常用的包之一。
首先,安装然后加载包。
install.packages("ggplot2")
library(ggplot2)
然后,创建一个直方图,其中 x 作为某个分数出现的次数。
ggplot(dataset, aes(x = Valenz)) +
geom_histogram(bins = 7, color = "Black", fill = "White") +
labs(title = NULL, x = "Name of my variable", y = "Count of 'Variable'") +
theme_minimal()
- ggplot() 获取数据帧的值,然后 aes() 指定您希望 Valenz 在 x 轴上。
- geom_histogram() 为您提供 "bins = 7" 的直方图(7 个选项,因为它是李克特量表),以及 "color = 'Black'" 和 "fill = 'White'" 的条形图。
- labs() 指定出现在 x("x = " 我的变量的名称”)下方的标签,然后是 y(y = "Count of 'Variable'")下方的标签。
- theme_minimal()让剧情看起来更酷
我希望我以某种方式帮助了你,Lorena。 (: