Data=read.table(file.choose(),header=T)
data
## function (..., list = character(), package = NULL, lib.loc = NULL,
## verbose = getOption("verbose"), envir = .GlobalEnv, overwrite = TRUE)
## {
## fileExt <- function(x) {
## db <- grepl("\\.[^.]+\\.(gz|bz2|xz)$", x)
## ans <- sub(".*\\.", "", x)
## ans[db] <- sub(".*\\.([^.]+\\.)(gz|bz2|xz)$", "\\1\\2",
## x[db])
## ans
## }
## my_read_table <- function(...) {
## lcc <- Sys.getlocale("LC_COLLATE")
## on.exit(Sys.setlocale("LC_COLLATE", lcc))
## Sys.setlocale("LC_COLLATE", "C")
## read.table(...)
## }
## stopifnot(is.character(list))
## names <- c(as.character(substitute(list(...))[-1L]), list)
## if (!is.null(package)) {
## if (!is.character(package))
## stop("'package' must be a character vector or NULL")
## }
## paths <- find.package(package, lib.loc, verbose = verbose)
## if (is.null(lib.loc))
## paths <- c(path.package(package, TRUE), if (!length(package)) getwd(),
## paths)
## paths <- unique(normalizePath(paths[file.exists(paths)]))
## paths <- paths[dir.exists(file.path(paths, "data"))]
## dataExts <- tools:::.make_file_exts("data")
## if (length(names) == 0L) {
## db <- matrix(character(), nrow = 0L, ncol = 4L)
## for (path in paths) {
## entries <- NULL
## packageName <- if (file_test("-f", file.path(path,
## "DESCRIPTION")))
## basename(path)
## else "."
## if (file_test("-f", INDEX <- file.path(path, "Meta",
## "data.rds"))) {
## entries <- readRDS(INDEX)
## }
## else {
## dataDir <- file.path(path, "data")
## entries <- tools::list_files_with_type(dataDir,
## "data")
## if (length(entries)) {
## entries <- unique(tools::file_path_sans_ext(basename(entries)))
## entries <- cbind(entries, "")
## }
## }
## if (NROW(entries)) {
## if (is.matrix(entries) && ncol(entries) == 2L)
## db <- rbind(db, cbind(packageName, dirname(path),
## entries))
## else warning(gettextf("data index for package %s is invalid and will be ignored",
## sQuote(packageName)), domain = NA, call. = FALSE)
## }
## }
## colnames(db) <- c("Package", "LibPath", "Item", "Title")
## footer <- if (missing(package))
## paste0("Use ", sQuote(paste("data(package =", ".packages(all.available = TRUE))")),
## "\n", "to list the data sets in all *available* packages.")
## else NULL
## y <- list(title = "Data sets", header = NULL, results = db,
## footer = footer)
## class(y) <- "packageIQR"
## return(y)
## }
## paths <- file.path(paths, "data")
## for (name in names) {
## found <- FALSE
## for (p in paths) {
## tmp_env <- if (overwrite)
## envir
## else new.env()
## if (file_test("-f", file.path(p, "Rdata.rds"))) {
## rds <- readRDS(file.path(p, "Rdata.rds"))
## if (name %in% names(rds)) {
## found <- TRUE
## if (verbose)
## message(sprintf("name=%s:\t found in Rdata.rds",
## name), domain = NA)
## objs <- rds[[name]]
## lazyLoad(file.path(p, "Rdata"), envir = tmp_env,
## filter = function(x) x %in% objs)
## break
## }
## else if (verbose)
## message(sprintf("name=%s:\t NOT found in names() of Rdata.rds, i.e.,\n\t%s\n",
## name, paste(names(rds), collapse = ",")),
## domain = NA)
## }
## files <- list.files(p, full.names = TRUE)
## files <- files[grep(name, files, fixed = TRUE)]
## if (length(files) > 1L) {
## o <- match(fileExt(files), dataExts, nomatch = 100L)
## paths0 <- dirname(files)
## paths0 <- factor(paths0, levels = unique(paths0))
## files <- files[order(paths0, o)]
## }
## if (length(files)) {
## for (file in files) {
## if (verbose)
## message("name=", name, ":\t file= ...", .Platform$file.sep,
## basename(file), "::\t", appendLF = FALSE,
## domain = NA)
## ext <- fileExt(file)
## if (basename(file) != paste0(name, ".", ext))
## found <- FALSE
## else {
## found <- TRUE
## switch(ext, R = , r = {
## library("utils")
## sys.source(file, chdir = TRUE, envir = tmp_env)
## }, RData = , rdata = , rda = load(file, envir = tmp_env),
## TXT = , txt = , tab = , tab.gz = , tab.bz2 = ,
## tab.xz = , txt.gz = , txt.bz2 = , txt.xz = assign(name,
## my_read_table(file, header = TRUE, as.is = FALSE),
## envir = tmp_env), CSV = , csv = , csv.gz = ,
## csv.bz2 = , csv.xz = assign(name, my_read_table(file,
## header = TRUE, sep = ";", as.is = FALSE),
## envir = tmp_env), found <- FALSE)
## }
## if (found)
## break
## }
## if (verbose)
## message(if (!found)
## "*NOT* ", "found", domain = NA)
## }
## if (found)
## break
## }
## if (!found) {
## warning(gettextf("data set %s not found", sQuote(name)),
## domain = NA)
## }
## else if (!overwrite) {
## for (o in ls(envir = tmp_env, all.names = TRUE)) {
## if (exists(o, envir = envir, inherits = FALSE))
## warning(gettextf("an object named %s already exists and will not be overwritten",
## sQuote(o)))
## else assign(o, get(o, envir = tmp_env, inherits = FALSE),
## envir = envir)
## }
## rm(tmp_env)
## }
## }
## invisible(names)
## }
## <bytecode: 0x0000016d30c09038>
## <environment: namespace:utils>
length(Data$IPM)
## [1] 38
mean(Data$IPM)
## [1] 72.38842
median(Data$IPM)
## [1] 73.18
range(Data$IPM)
## [1] 53.42 83.08
max(Data$IPM)-min(Data$IPM)
## [1] 29.66
max(Data$IPM)
## [1] 83.08
min(Data$IPM)
## [1] 53.42
var(Data$IPM)
## [1] 26.52484
sd(Data$IPM)
## [1] 5.150227
quantile(Data$IPM)
## 0% 25% 50% 75% 100%
## 53.420 71.080 73.180 74.345 83.080
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
ggplot(Data,aes(x=IPM))+geom_histogram(
binwidth=5,
boundary=60,
fill="pink",
color="black"
)+
scale_x_continuous(
breaks=seq(60,85,by=5),
limits=c(60,85)
)+
labs(
title="IPM di Indonesia",
x="IPM",
y="Freq"
)+
theme_classic()+
theme(
axis.text.x=element_text(angle=0,hjust=0.5),
plot.title=element_text(
hjust=2,
face="bold"
)
)
## Warning: Removed 2 rows containing non-finite outside the scale range
## (`stat_bin()`).

ggplot(Data, aes(x = "", y = IPM)) +
geom_boxplot(fill = "red") +
labs(title = "Box Plot IPM Indonesia 2024", x = "", y = "IPM") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.3
## Warning: package 'tibble' was built under R version 4.5.3
## Warning: package 'tidyr' was built under R version 4.5.3
## Warning: package 'readr' was built under R version 4.5.3
## Warning: package 'purrr' was built under R version 4.5.3
## Warning: package 'stringr' was built under R version 4.5.2
## Warning: package 'forcats' was built under R version 4.5.3
## Warning: package 'lubridate' was built under R version 4.5.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ lubridate 1.9.5 ✔ tibble 3.3.1
## ✔ purrr 1.2.2 ✔ tidyr 1.3.2
## ✔ readr 2.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
Data_Kalimantan <- Data %>%
filter(str_starts(Provinsi, "KALIMANTAN"))
Data_Kalimantan
## Provinsi IPM
## 1 KALIMANTAN_BARAT 70.13
## 2 KALIMANTAN_TENGAH 72.73
## 3 KALIMANTAN_SELATAN 73.03
## 4 KALIMANTAN_TIMUR 78.83
## 5 KALIMANTAN_UTARA 73.02
ggplot(Data_Kalimantan, aes(x = Provinsi, y = IPM, fill = Provinsi)) +
geom_col() +
labs(
title = "IPM Pulau Kalimantan Tahun 2024",
x = "Provinsi",
y = "IPM"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold"),
legend.position = "none"
)

library(dplyr)
library(tidyverse)
library(ggplot2)
Data_Kalimantan <- Data %>%
filter(str_starts(Provinsi, "KALIMANTAN"))
Data_Kalimantan
## Provinsi IPM
## 1 KALIMANTAN_BARAT 70.13
## 2 KALIMANTAN_TENGAH 72.73
## 3 KALIMANTAN_SELATAN 73.03
## 4 KALIMANTAN_TIMUR 78.83
## 5 KALIMANTAN_UTARA 73.02
ggplot(Data_Kalimantan, aes(x = Provinsi, y = IPM, fill = Provinsi)) +
geom_col() +
labs(
title = "IPM Pulau Kalimantan Tahun 2024",
x = "Provinsi",
y = "IPM"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold"),
legend.position = "none"
)

# Load library
library(ggplot2)
# Baca data
data = read.table(file.choose(), header = T, sep = "\t")
data
## Nama_Produk Kategori Penjualan
## 1 Beras Sembako 35
## 2 Minyak_Goreng Sembako 75
## 3 Gula_Pasir Sembako 60
## 4 Mie_Instan Makanan 150
## 5 Biskuit Makanan 85
## 6 Susu_UHT Makanan 70
## 7 The_Celup Makanan 55
## 8 Sabun_Mandi Perawatan 90
## 9 Sampo Perawatan 65
## 10 Pasta_Gigi Perawatan 70
## 11 Sabun_Cuci_ Muka Perawatan 45
# Buat barplot dengan ggplot2
ggplot(data, aes(x = Nama_Produk, y = Penjualan, fill = Kategori)) +
geom_bar(stat = "identity") +
labs(
title = "Jumlah Penjualan Produk Toko MUTIA",
x = "Produk",
y = "Jumlah Penjualan"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")
)
