Contoh 1

library(tm)
## Warning: package 'tm' was built under R version 4.1.3
## Loading required package: NLP
library(stringr)
## Warning: package 'stringr' was built under R version 4.1.3
# Contoh data teks
data_teks <- c(
  "Saya suka belajar matematika karena saya merasa pintar ketika bisa menyelesaikan soal-soalnya.",
  "Terkadang matematika membuat saya bingung dan frustasi.",
  "Guru kami sangat membantu dalam menjelaskan materi matematika.",
  "Pembelajaran matematika online selama pandemi membuat saya merasa kesulitan karena kurangnya interaksi langsung."
)


corpus <- Corpus(VectorSource(data_teks))

# Membersihkan teks
corpus <- tm_map(corpus, content_transformer(tolower))  # Mengonversi ke huruf kecil
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(tolower)):
## transformation drops documents
corpus <- tm_map(corpus, removePunctuation)  # Menghapus tanda baca
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
corpus <- tm_map(corpus, removeNumbers)  # Menghapus angka
## Warning in tm_map.SimpleCorpus(corpus, removeNumbers): transformation drops
## documents
corpus <- tm_map(corpus, removeWords, stopwords("english"))  
## Warning in tm_map.SimpleCorpus(corpus, removeWords, stopwords("english")):
## transformation drops documents
# Menghitung frekuensi kata
term_freq <- DocumentTermMatrix(corpus)

# Mengonversi ke data frame
term_freq_df <- as.data.frame(as.matrix(term_freq))
colnames(term_freq_df) <- make.names(colnames(term_freq_df))


print(term_freq_df)
##   belajar bisa karena ketika matematika menyelesaikan merasa pintar saya
## 1       1    1      1      1          1             1      1      1    2
## 2       0    0      0      0          1             0      0      0    1
## 3       0    0      0      0          1             0      0      0    0
## 4       0    0      1      0          1             0      1      0    1
##   soalsoalnya suka bingung dan frustasi membuat terkadang dalam guru kami
## 1           1    1       0   0        0       0         0     0    0    0
## 2           0    0       1   1        1       1         1     0    0    0
## 3           0    0       0   0        0       0         0     1    1    1
## 4           0    0       0   0        0       1         0     0    0    0
##   materi membantu menjelaskan sangat interaksi kesulitan kurangnya langsung
## 1      0        0           0      0         0         0         0        0
## 2      0        0           0      0         0         0         0        0
## 3      1        1           1      1         0         0         0        0
## 4      0        0           0      0         1         1         1        1
##   online pandemi pembelajaran selama
## 1      0       0            0      0
## 2      0       0            0      0
## 3      0       0            0      0
## 4      1       1            1      1
library(tm)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.1.3
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:NLP':
## 
##     annotate
# Data teks contoh
data_teks <- c(
  "Saya suka belajar matematika karena saya merasa pintar ketika bisa menyelesaikan soal-soalnya.",
  "Terkadang matematika membuat saya bingung dan frustasi.",
  "Guru kami sangat membantu dalam menjelaskan materi matematika.",
  "Pembelajaran matematika online selama pandemi membuat saya merasa kesulitan karena kurangnya interaksi langsung."
)

corpus <- Corpus(VectorSource(data_teks))

# Membersihkan teks
corpus <- tm_map(corpus, content_transformer(tolower))  
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(tolower)):
## transformation drops documents
corpus <- tm_map(corpus, removePunctuation)  
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
corpus <- tm_map(corpus, removeNumbers)  
## Warning in tm_map.SimpleCorpus(corpus, removeNumbers): transformation drops
## documents
corpus <- tm_map(corpus, removeWords, stopwords("english")) 
## Warning in tm_map.SimpleCorpus(corpus, removeWords, stopwords("english")):
## transformation drops documents
# Membuat term document matrix
tdm <- TermDocumentMatrix(corpus)

# Menghitung frekuensi kata-kata
term_freq <- rowSums(as.matrix(tdm))

# Membuat data frame frekuensi kata-kata
term_freq_df <- data.frame(Kata = names(term_freq), Frekuensi = term_freq)

# Urutkan data berdasarkan frekuensi
term_freq_df <- term_freq_df[order(term_freq_df$Frekuensi, decreasing = TRUE), ]

# Membuat grafik batang dengan ggplot2
ggplot(term_freq_df, aes(x = reorder(Kata, -Frekuensi), y = Frekuensi, fill = Kata, label = Frekuensi)) +
  geom_bar(stat = "identity") +
  geom_text(size = 3, position = position_stack(vjust = 0.5), color = "black") +
  labs(x = "Kata", y = "Frekuensi") +
  theme_minimal() +
  theme(axis.text.x = element_blank()) +
  ggtitle("Frekuensi Kata dalam Teks")

Contoh 2

library(MASS)
## Warning: package 'MASS' was built under R version 4.1.3
painters
##                 Composition Drawing Colour Expression School
## Da Udine                 10       8     16          3      A
## Da Vinci                 15      16      4         14      A
## Del Piombo                8      13     16          7      A
## Del Sarto                12      16      9          8      A
## Fr. Penni                 0      15      8          0      A
## Guilio Romano            15      16      4         14      A
## Michelangelo              8      17      4          8      A
## Perino del Vaga          15      16      7          6      A
## Perugino                  4      12     10          4      A
## Raphael                  17      18     12         18      A
## F. Zucarro               10      13      8          8      B
## Fr. Salviata             13      15      8          8      B
## Parmigiano               10      15      6          6      B
## Primaticcio              15      14      7         10      B
## T. Zucarro               13      14     10          9      B
## Volterra                 12      15      5          8      B
## Barocci                  14      15      6         10      C
## Cortona                  16      14     12          6      C
## Josepin                  10      10      6          2      C
## L. Jordaens              13      12      9          6      C
## Testa                    11      15      0          6      C
## Vanius                   15      15     12         13      C
## Bassano                   6       8     17          0      D
## Bellini                   4       6     14          0      D
## Giorgione                 8       9     18          4      D
## Murillo                   6       8     15          4      D
## Palma Giovane            12       9     14          6      D
## Palma Vecchio             5       6     16          0      D
## Pordenone                 8      14     17          5      D
## Tintoretto               15      14     16          4      D
## Titian                   12      15     18          6      D
## Veronese                 15      10     16          3      D
## Albani                   14      14     10          6      E
## Caravaggio                6       6     16          0      E
## Corregio                 13      13     15         12      E
## Domenichino              15      17      9         17      E
## Guercino                 18      10     10          4      E
## Lanfranco                14      13     10          5      E
## The Carraci              15      17     13         13      E
## Durer                     8      10     10          8      F
## Holbein                   9      10     16         13      F
## Pourbus                   4      15      6          6      F
## Van Leyden                8       6      6          4      F
## Diepenbeck               11      10     14          6      G
## J. Jordaens              10       8     16          6      G
## Otho Venius              13      14     10         10      G
## Rembrandt                15       6     17         12      G
## Rubens                   18      13     17         17      G
## Teniers                  15      12     13          6      G
## Van Dyck                 15      10     17         13      G
## Bourdon                  10       8      8          4      H
## Le Brun                  16      16      8         16      H
## Le Suer                  15      15      4         15      H
## Poussin                  15      17      6         15      H
school = painters$School

school
##  [1] A A A A A A A A A A B B B B B B C C C C C C D D D D D D D D D D E E E E E E
## [39] E F F F F G G G G G G G H H H H
## Levels: A B C D E F G H
school.frek = table(school)

school.frek
## school
##  A  B  C  D  E  F  G  H 
## 10  6  6 10  7  4  7  4
barplot(school.frek,
        col = c("red", "yellow", "green", "blue",
                  "orange", "purple", "lightblue", "pink"))

pie(school.frek)

tapply(painters$Composition, painters$School, 
       mean)
##        A        B        C        D        E        F        G        H 
## 10.40000 12.16667 13.16667  9.10000 13.57143  7.25000 13.85714 14.00000