Read the PISA data

library(haven)
pisa.dat <- read_spss("PISA_tawian2022_trimmed_lab.sav")   # 請改成你的 PISA 檔名

1.Adding the z scores into our pisa dataset with a new name (= new variable)

pisa.dat$ESCS.z <- scale(pisa.dat$ESCS, center = TRUE, scale = TRUE)[,1]
head(pisa.dat)
## # A tibble: 6 × 22
##   CNT          CNTSTUID NatCen     Gender  AGE   ESCS   REPEAT  MISSSC  SKIPPING
##   <chr+lbl>       <dbl> <chr+lbl>  <dbl+l> <dbl> <dbl+> <dbl+l> <dbl+l> <dbl+lb>
## 1 TAP [Chines… 15800002 015… [Chi… 1 [Fem… 15.6  -0.322 0 [Nev… 0 [Nev… 0 [No c…
## 2 TAP [Chines… 15800003 015… [Chi… 1 [Fem… 15.8   0.156 0 [Nev… 0 [Nev… 0 [No c…
## 3 TAP [Chines… 15800004 015… [Chi… 2 [Mal… 16.1  -0.574 0 [Nev… 0 [Nev… 0 [No c…
## 4 TAP [Chines… 15800005 015… [Chi… 1 [Fem… 16.1  -0.818 0 [Nev… 0 [Nev… 0 [No c…
## 5 TAP [Chines… 15800007 015… [Chi… 2 [Mal… 16     0.511 0 [Nev… 0 [Nev… 0 [No c…
## 6 TAP [Chines… 15800008 015… [Chi… 1 [Fem… 15.5   0.287 0 [Nev… 0 [Nev… 0 [No c…
## # ℹ 13 more variables: WORKPAY <dbl+lbl>, MATHMOT <dbl+lbl>, RELATST <dbl+lbl>,
## #   BELONG <dbl+lbl>, STRESAGR <dbl+lbl>, GROSAGR <dbl+lbl>,
## #   TEACHSUP <dbl+lbl>, ANXMAT <dbl+lbl>, MATHPERS <dbl+lbl>, PV1MATH <dbl>,
## #   PV1READ <dbl>, PV1SCIE <dbl>, ESCS.z <dbl>

2. Compute descriptive statistics for the z-score of ESCS

library(psych)
summary(pisa.dat$ESCS.z)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -3.94341 -0.73905  0.03678  0.00000  0.78318  4.94265
describe(pisa.dat$ESCS.z)
##    vars    n mean sd median trimmed  mad   min  max range  skew kurtosis   se
## X1    1 5599    0  1   0.04    0.03 1.13 -3.94 4.94  8.89 -0.18    -0.31 0.01

3. Creating histogram

Histogram using hist function

hist(pisa.dat$ESCS.z)

Alternative package and function to create a histogram

library(ggplot2)
# dataset:
data=data.frame(pisa.dat$ESCS.z)
head(data)
##   pisa.dat.ESCS.z
## 1     -0.05739356
## 2      0.47097225
## 3     -0.33526585
## 4     -0.60474787
## 5      0.86244429
## 6      0.61515231
# basic histogram
p <- ggplot(data, aes(x=pisa.dat.ESCS.z)) +
  geom_histogram() #x=new variable name in the dataframe
p

p1 <- ggplot(data, aes(x=pisa.dat.ESCS.z)) +
  geom_histogram(binwidth=0.5)     #change binwidth of the histograms
p1