NRTデータを確認してみる

setwd("/Users/koyo/Dropbox/000099_oouchi/nrt_mod")
# NRTデータの読み込み
nrt.234.1_ <- read.csv("CSR_27_1.csv")
nrt.234.2_ <- read.csv("CSR_27_2.csv")
nrt.345.1_ <- read.csv("CSR_27_3.csv")
nrt.345.2_ <- read.csv("CSR_27_4.csv")
nrt.456.1_ <- read.csv("CSR_27_5.csv")
nrt.456.2_ <- read.csv("CSR_27_6.csv")
nrt.456.3_ <- read.csv("CSR_27_7.csv")
nrt.456.4_ <- read.csv("CSR_27_8.csv")
nrt.456.5_ <- read.csv("CSR_27_9.csv")
nrt.456.6_ <- read.csv("CSR_27_10.csv")

# 必要な変数を取り出す
nrt.234.1 <- nrt.234.1_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.234.2 <- nrt.234.2_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.345.1 <- nrt.345.1_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.345.2 <- nrt.345.2_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.456.1 <- nrt.456.1_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.456.2 <- nrt.456.2_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.456.3 <- nrt.456.3_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.456.4 <- nrt.456.4_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.456.5 <- nrt.456.5_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
nrt.456.6 <- nrt.456.6_[c("gakkobango", "seibetsu", "t1koku", "t2koku", "t3koku", "t1sha", "t2sha", "t3sha", "t1san", "t2san", "t3san", "t1ri", "t2ri", "t3ri", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]

# 教科別にまとめる
shak.456_ <- rbind(nrt.456.5, nrt.456.6)

# 学校数確認
shak.456.schl <- data.frame(unique(shak.456_$gakkobango))

学校調査に2年分回答した学校

# 1年ごとの学校調査のデータ
setwd("/Users/koyo/Dropbox/000099_Oouchi/data")
h25.ss <- read_excel("H25_SS_PQ.xlsx", sheet=4, col_names=TRUE)
h26.ss <- read_excel("H26_SS_PQ_moto.xlsx", sheet=4, col_names=TRUE)

h25.ss.sid <- data.frame(h25.ss$sid)
h26.ss.sid <- data.frame(h26.ss$sid)

colnames(h25.ss.sid) <- c("sid")
colnames(h26.ss.sid) <- c("sid")

# 2年分の学校調査の回答ありの学校
library(dplyr)
## 
## 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
h2526.sid <- dplyr::inner_join(h25.ss.sid, h26.ss.sid, by = "sid")

学校調査に2年分回答し,NRTデータのある学校

colnames(shak.456.schl) <- c("sid")
nrt.school <- dplyr::inner_join(shak.456.schl, h2526.sid, by = "sid")

複式ではない,少人数指導をしていない学校

setwd("/Users/koyo/Dropbox/000099_Oouchi/data")
h25.hensei <- read_excel("H25_sho_hensei.xlsx", sheet=1, col_names=TRUE)
## New names:
## * `` -> ...1
h25.ss <- read_excel("H25_SS_PQ.xlsx", sheet=4, col_names=TRUE)
h25.sa <- read_excel("H25_SA_PQ_noasta.xlsx", sheet=4, col_names=TRUE)
h26.hensei <- read_excel("H26_sho_hensei.xlsx", sheet=5, col_names=TRUE)
## New names:
## * `` -> ...1
h26.ss <- read_excel("H26_SS_PQ_moto.xlsx", sheet=4, col_names=TRUE)
h26.sa <- read_excel("H26_SA_PQ_moto_noasta.xlsx", sheet=4, col_names=TRUE)

# 形成的評価実施データの作成
## 学年の限定
h25.g4.sa <- subset(h25.sa, Q1==4)
h26.g5.sa <- subset(h26.sa, Q3==5)

## 教科の限定
h25.g4.shak.sa <- h25.g4.sa
h26.g5.shak.sa <- h26.g5.sa

## 年度別のフィードバック実施状況
### 1年目・計画的FBをやりきる(その1)
h25.g4.shak.sa$kfb.t1 <- ifelse(h25.g4.shak.sa$Q20S1 == 1 &
h25.g4.shak.sa$Q22S2 == 1, 1, 0)

### 1年目・非計画的FBを半分超やりきる(その2)
h25.g4.shak.sa$hfb.t1 <- ifelse(h25.g4.shak.sa$Q23S1 < 3 &
h25.g4.shak.sa$Q23S2 < 3 &
h25.g4.shak.sa$Q25S1 < 3 &
h25.g4.shak.sa$Q25S2 < 3 &
h25.g4.shak.sa$Q23S1 > 0 &
h25.g4.shak.sa$Q23S2 > 0 &
h25.g4.shak.sa$Q25S1 > 0 &
h25.g4.shak.sa$Q25S2 > 0, 1, 0)

### 1年目・その1,2を満たす
h25.g4.shak.sa$khfb.t1 <- ifelse(h25.g4.shak.sa$kfb.t1 == 1 &
h25.g4.shak.sa$hfb.t1 == 1, 1, 0)

### 1年目・経験年数
#### 教諭・10年以下
h25.g4.shak.sa$kei10 <- ifelse(h25.g4.shak.sa$Q37 == 2 & h25.g4.shak.sa$Q38 <11, 1, 0)
#### 教諭・20年以下
h25.g4.shak.sa$kei20 <- ifelse(h25.g4.shak.sa$Q37 == 2 & h25.g4.shak.sa$Q38 < 21 & h25.g4.shak.sa$Q38 >10, 1, 0)
#### 教諭・21年以上
h25.g4.shak.sa$kei21 <- ifelse(h25.g4.shak.sa$Q37 == 2 & h25.g4.shak.sa$Q38 >20, 1, 0)

#### 10年以下かどうか
h25.g4.shak.sa$kei3c1 <- ifelse(h25.g4.shak.sa$Q37 == 1 | h25.g4.shak.sa$kei10 ==1, 1, 0)
h25.g4.shak.sa$kei3c2 <- ifelse(h25.g4.shak.sa$kei20 ==1, 1, 0)
h25.g4.shak.sa$kei3c3 <- ifelse(h25.g4.shak.sa$Q37 == 3 | h25.g4.shak.sa$kei21 ==1, 1, 0)

#### 20年以下かどうか
h25.g4.shak.sa$kei2c1 <- ifelse(h25.g4.shak.sa$Q37 == 1 | h25.g4.shak.sa$kei10 ==1, 1, 0)
h25.g4.shak.sa$kei2c2 <- ifelse(h25.g4.shak.sa$kei3c1 == 1 | h25.g4.shak.sa$kei3c2 ==1, 1, 0)


### 2年目・計画的FBをやりきる(その1)
h26.g5.shak.sa$kfb.t2 <- ifelse(h26.g5.shak.sa$Q22S1 == 1 &
h26.g5.shak.sa$Q24S2 == 1, 1, 0)

### 2年目・非計画的FBを半分超やりきる(その2)
h26.g5.shak.sa$hfb.t2 <- ifelse(h26.g5.shak.sa$Q25S1 < 3 &
h26.g5.shak.sa$Q25S2 < 3 &
h26.g5.shak.sa$Q27S1 < 3 &
h26.g5.shak.sa$Q27S2 < 3 &
h26.g5.shak.sa$Q25S1 > 0 &
h26.g5.shak.sa$Q25S2 > 0 &
h26.g5.shak.sa$Q27S1 > 0 &
h26.g5.shak.sa$Q27S2 > 0 , 1, 0)

### 2年目・その1,2を満たす
h26.g5.shak.sa$khfb.t2 <- ifelse(h26.g5.shak.sa$kfb.t2 == 1 &
h26.g5.shak.sa$hfb.t2 == 1, 1, 0)

### 2年目・経験年数
#### 教諭・10年以下
h26.g5.shak.sa$kei10 <- ifelse(h26.g5.shak.sa$Q44 == 2 & h26.g5.shak.sa$Q45 <11, 1, 0)
#### 教諭・20年以下
h26.g5.shak.sa$kei20 <- ifelse(h26.g5.shak.sa$Q44 == 2 & h26.g5.shak.sa$Q45 < 21 & h26.g5.shak.sa$Q45 >10, 1, 0)
#### 教諭・21年以上
h26.g5.shak.sa$kei21 <- ifelse(h26.g5.shak.sa$Q44 == 2 & h26.g5.shak.sa$Q45 >20, 1, 0)

#### 10年以下かどうか
h26.g5.shak.sa$kei3c1 <- ifelse(h26.g5.shak.sa$Q44 == 1 | h26.g5.shak.sa$kei10 ==1, 1, 0)
h26.g5.shak.sa$kei3c2 <- ifelse(h26.g5.shak.sa$kei20 ==1, 1, 0)
h26.g5.shak.sa$kei3c3 <- ifelse(h26.g5.shak.sa$Q44 == 3 | h26.g5.shak.sa$kei21 ==1, 1, 0)

#### 20年以下かどうか
h26.g5.shak.sa$kei2c1 <- ifelse(h26.g5.shak.sa$Q44 == 1 | h26.g5.shak.sa$kei10 ==1, 1, 0)
h26.g5.shak.sa$kei2c2 <- ifelse(h26.g5.shak.sa$kei3c1 == 1 | h26.g5.shak.sa$kei3c2 ==1, 1, 0)

# 学校別学年別平均学級規模データの作成
## 1時点目(第4学年)
h25.g4.hensei.all <- subset(h25.hensei, g==4)

## 2時点目(第5学年)
h26.g5.hensei.all <- subset(h26.hensei, g==5)

## 0人学級の列を削除
h25.g4.hensei <- subset(h25.g4.hensei.all, pupil>0)
h26.g5.hensei <- subset(h26.g5.hensei.all, pupil>0)

## 学校別年度別平均学級規模を求める
h25.g4.csmean.tab <- tapply(h25.g4.hensei$pupil, h25.g4.hensei$sid, mean)
h26.g5.csmean.tab <- tapply(h26.g5.hensei$pupil, h26.g5.hensei$sid, mean)

### 集計結果を行ったり来たりさせてデータ化する
setwd("/Users/koyo/Dropbox/000099_oouchi/160618/df2csv2df")
h25.g4.csmean.df <- data.frame(h25.g4.csmean.tab)
write.csv(h25.g4.csmean.df, "h25_g4_csmean.csv")
h25.g4.csmean <- read.csv("h25_g4_csmean.csv")
colnames(h25.g4.csmean) <- c("sid", "cs.t1.m")
h26.g5.csmean.df <- data.frame(h26.g5.csmean.tab)
write.csv(h26.g5.csmean.df, "h26_g5_csmean.csv")
h26.g5.csmean <- read.csv("h26_g5_csmean.csv")
colnames(h26.g5.csmean) <- c("sid", "cs.t2.m")
setwd("/Users/koyo/Dropbox/000099_oouchi/160618")

##  2時点をまとめる
csmean.456 <- merge(h25.g4.csmean, h26.g5.csmean, by="sid", all=T)

# 学校別学年別学級数データの作成
## 1時点目
h25.g4.nc.all <- h25.g4.hensei[c("sid", "nc_by_g")]
h25.g4.nc <- unique(h25.g4.nc.all )
colnames(h25.g4.nc) <- c("sid", "nc.t1")

## 2時点目
h26.g5.nc.all <- h26.g5.hensei[c("sid", "nc_by_g")]
h26.g5.nc <- unique(h26.g5.nc.all )
colnames(h26.g5.nc) <- c("sid", "nc.t2")

## 2時点をまとめる
nc.456 <- merge(h25.g4.nc, h26.g5.nc, by="sid", all=T)

# 学校別学年別平均学級規模・学級数データの作成
## csmeanとncをマージ
cs.nc.456.mae <- merge(csmean.456, nc.456, by="sid", all=T)

## 2年間の学級数が同じという変数を加える
cs.nc.456.mae$ncsame <- ifelse(cs.nc.456.mae$nc.t1 == cs.nc.456.mae$nc.t2, 1, 0)

## ncistanを加える
cs.nc.456.mae$ncistan <- ifelse(cs.nc.456.mae$nc.t1 == 1 & cs.nc.456.mae$nc.t2 == 1, 1, 0)

## 2年間の平均学級規模を加える
cs.nc.456 <- transform(cs.nc.456.mae, csmean =((cs.t1.m + cs.t2.m)/2))

## 2年間学級数が同じ学校に学級数の変数を追加する
cs.nc.456$nc <- ifelse(cs.nc.456$ncsame == 1, cs.nc.456$nc.t1, 0)

# 少人数指導等実施有無データの作成
## TTを含む少人数指導なしの学校
h25.g4.shak.nott_ <- subset(h25.ss, Q9S2_4==1)
h26.g5.shak.nott_ <- subset(h26.ss, Q11S2_4==1)
h25.g4.shak.nott.s <- h25.g4.shak.nott_[c("sid")]
h26.g5.shak.nott.s <- h26.g5.shak.nott_[c("sid")]
shak.456.nott <- merge(h25.g4.shak.nott.s, h26.g5.shak.nott.s)

# 分析対象校・学級規模等・学力データの結合
## TT含む少人数指導なしの学校
shak.456.sc.nscs.all <- merge(shak.456.nott, cs.nc.456)

複式ではない,少人数指導をしていない,456年の社会科NRTデータのある学校

colnames(shak.456.schl) <- c("sid")
library(dplyr)
taishoko <- dplyr::inner_join(shak.456.sc.nscs.all, shak.456.schl, by = "sid")

2年分の教師データがとれた児童数と学級数の確認

### 教科別に加工する
shak.456 <- shak.456_[c("gakkobango", "seibetsu", "t1sha", "t2sha", "t3sha", "t1gakunen", "t1gakkyu", "t2gakunen", "t2gakkyu")]
shak.456 <- transform(shak.456, sgcid.t1=(paste(gakkobango, t1gakunen, t1gakkyu ,sep="")))
shak.456 <- transform(shak.456, sgcid.t2=(paste(gakkobango, t2gakunen, t2gakkyu ,sep="")))

## センタリングの変数を作る
### 計算しやすくするために変数名を変え,NAなしにする
nrt.cn <- c("sid", "sex", "t1", "t2", "t3", "g.t1", "c.t1", "g.t2", "c.t2", "sgcid.t1", "sgcid.t2")
colnames(shak.456) <- nrt.cn
shak.456 <- na.omit(shak.456)

### T1の学力偏差値を50で引く
shak.456 <- transform(shak.456, t1m50=(t1-50))
### T2の学力偏差値を50で引く
shak.456 <- transform(shak.456, t2m50=(t2-50))
### T3の学力偏差値を50で引く
shak.456 <- transform(shak.456, t3m50=(t3-50))

### t1m50の学校平均を出す
shak.456.t1m50sm.df <- data.frame(tapply(shak.456$t1m50, shak.456$sid, mean))
setwd("/Users/koyo/Dropbox/000099_oouchi/200705/df2csv2df")
write.csv(shak.456.t1m50sm.df, "shak_456_t1m50sm.csv")
shak.456.t1m50sm <- read.csv("shak_456_t1m50sm.csv")
colnames(shak.456.t1m50sm) <- c("sid", "t1m50sm")
setwd("/Users/koyo/Dropbox/000099_oouchi/200705")
### t2m50の学校平均を出す
shak.456.t2m50sm.df <- data.frame(tapply(shak.456$t2m50, shak.456$sid, mean))
setwd("/Users/koyo/Dropbox/000099_oouchi/200705/df2csv2df")
write.csv(shak.456.t2m50sm.df, "shak_456_t2m50sm.csv")
shak.456.t2m50sm <- read.csv("shak_456_t2m50sm.csv")
colnames(shak.456.t2m50sm) <- c("sid", "t2m50sm")
setwd("/Users/koyo/Dropbox/000099_oouchi/200705")

### t1m50smとt2m50smをマージする
shak.456.w.dm <- merge(shak.456.t1m50sm, shak.456.t2m50sm, by="sid")
### t1m50smとt2m50smをマージしたものを学力検査データにマージする
shak.456.w.sm <- merge(shak.456, shak.456.w.dm, by="sid")

### 児童偏差得点(t1m50-t1m50sm)の追加
shak.456.w.hens1 <- transform(shak.456.w.sm, jido.hensa.t1 = (t1m50 - t1m50sm))
### 児童偏差得点(t2m50-t2m50sm)の追加
shak.456.w.hensa <- transform(shak.456.w.hens1, jido.hensa.t2 = (t2m50 - t2m50sm))

# 分析対象校・学級規模等・学力データの結合
## TT含む少人数指導なしの学校
shak.456.sc.nscs.all <- merge(shak.456.nott, cs.nc.456)

### 学級数変動のあった学校を除外することは止めておく
#shak.456.sc.nscs <- subset(shak.456.sc.nscs.all, ncsame ==1)
shak.456.sc.nscs <- shak.456.sc.nscs.all

## 学力データの結合
shak.456.sc.nscs.nrt <- merge(shak.456.w.hensa, shak.456.sc.nscs, by="sid")

# フィードバック実施状況の結合
## フィードバックデータの整形
h25.g4.shak.fb <- h25.g4.shak.sa[c("scgid","kfb.t1", "hfb.t1", "khfb.t1", "kei3c1", "kei3c2", "kei3c3",  "kei2c1", "kei2c2")]
colnames(h25.g4.shak.fb) <- c("sgcid.t1", "kfb.t1", "hfb.t1", "khfb.t1", "kei3c1.t1", "kei3c2.t1", "kei3c3.t1",  "kei2c1.t1", "kei2c2.t1")
h26.g5.shak.fb <- h26.g5.shak.sa[c("scgid","kfb.t2", "hfb.t2", "khfb.t2", "kei3c1", "kei3c2", "kei3c3",  "kei2c1", "kei2c2")]
colnames(h26.g5.shak.fb) <- c("sgcid.t2", "kfb.t2", "hfb.t2", "khfb.t2", "kei3c1.t2", "kei3c2.t2", "kei3c3.t2",  "kei2c1.t2", "kei2c2.t2")

### 結合
shak.456.fb.t1 <- merge(shak.456.sc.nscs.nrt, h25.g4.shak.fb, by="sgcid.t1")
shak.456.fb <- merge(shak.456.fb.t1, h26.g5.shak.fb, by="sgcid.t2")

## 2年度間通しの状況
shak.456.fb$kfb <- ifelse(shak.456.fb$kfb.t1 ==1 & shak.456.fb$kfb.t2 ==1, 1, 0)
shak.456.fb$hfb <- ifelse(shak.456.fb$hfb.t1 ==1 & shak.456.fb$hfb.t2 ==1, 1, 0)
shak.456.fb$khfb <- ifelse(shak.456.fb$khfb.t1 ==1 & shak.456.fb$khfb.t2 ==1, 1, 0)

# 3レベル用の変数作成
## 2年間通しの学校学年学級IDを振る
shak.456.fb <- transform(shak.456.fb, SG4G5ID = (paste(sid, g.t1, c.t1, g.t2, c.t2, sep="")))

## t1m50の2年間通し学級平均を出す
shak.456.fb.t1m50cm.df <- data.frame(tapply(shak.456.fb$t1m50, shak.456.fb$SG4G5ID, mean))
## t2m50の2年間通し学級平均を出す
shak.456.fb.t2m50cm.df <- data.frame(tapply(shak.456.fb$t2m50, shak.456.fb$SG4G5ID, mean))

### データの加工
setwd("/Users/koyo/Dropbox/000099_oouchi/200705/df2csv2df")
write.csv(shak.456.fb.t1m50cm.df, "shak_456_t1m50cm.csv")
shak.456.fb.t1m50cm <- read.csv("shak_456_t1m50cm.csv")
colnames(shak.456.fb.t1m50cm) <- c("SG4G5ID", "t1m50cm")
write.csv(shak.456.fb.t2m50cm.df, "shak_456_t2m50cm.csv")
shak.456.fb.t2m50cm <- read.csv("shak_456_t2m50cm.csv")
colnames(shak.456.fb.t2m50cm) <- c("SG4G5ID", "t2m50cm")
setwd("/Users/koyo/Dropbox/000099_oouchi/200705")

## t1m50cmの学校平均を出す(PreL3)
shak.456.fb.t1m50cm <- transform(shak.456.fb.t1m50cm, sid = (substr(SG4G5ID, 1, 4)))
shak.456.fb.t1m50cm.sm.df <- data.frame(tapply(shak.456.fb.t1m50cm$t1m50cm, shak.456.fb.t1m50cm$sid, mean))
shak.456.fb.t2m50cm <- transform(shak.456.fb.t2m50cm, sid = (substr(SG4G5ID, 1, 4)))
shak.456.fb.t2m50cm.sm.df <- data.frame(tapply(shak.456.fb.t2m50cm$t2m50cm, shak.456.fb.t2m50cm$sid, mean))

### データの加工
setwd("/Users/koyo/Dropbox/000099_oouchi/200705/df2csv2df")
write.csv(shak.456.fb.t1m50cm.sm.df, "shak_456_t1m50cmsm.csv")
shak.456.fb.t1m50cm.sm <- read.csv("shak_456_t1m50cmsm.csv")
colnames(shak.456.fb.t1m50cm.sm) <- c("sid", "t1m50cmsm")
write.csv(shak.456.fb.t2m50cm.sm.df, "shak_456_t2m50cmsm.csv")
shak.456.fb.t2m50cm.sm <- read.csv("shak_456_t2m50cmsm.csv")
colnames(shak.456.fb.t2m50cm.sm) <- c("sid", "t2m50cmsm")
setwd("/Users/koyo/Dropbox/000099_oouchi/200705")

## 学級偏差平均(t1m50cm - t1m50cmsm)を求める(PreL2)
shak.456.fb.t1m50cm.m.cmsm <- merge(shak.456.fb.t1m50cm, shak.456.fb.t1m50cm.sm, by="sid", all=T)
shak.456.fb.t1m50cm.m.cmsm <- transform(shak.456.fb.t1m50cm.m.cmsm,  t1m50cm.m.cmsm =(t1m50cm - t1m50cmsm))
## 学級偏差平均(t2m50cm - t2m50cmsm)を求める(PreL2t2)
shak.456.fb.t2m50cm.m.cmsm <- merge(shak.456.fb.t2m50cm, shak.456.fb.t2m50cm.sm, by="sid", all=T)
shak.456.fb.t2m50cm.m.cmsm <- transform(shak.456.fb.t2m50cm.m.cmsm,  t2m50cm.m.cmsm =(t2m50cm - t2m50cmsm))

## 後のことを考えて名前を変えておく
colnames(shak.456.fb.t1m50cm.m.cmsm) <- c("sid", "SG4G5ID", "t1m50cm", "PreL3", "PreL2")
colnames(shak.456.fb.t2m50cm.m.cmsm) <- c("sid", "SG4G5ID", "t2m50cm", "PreL3t2", "PreL2t2")
### マージに使わない変数を消しておく
shak.456.fb.t1m50cm.m.cmsm <- shak.456.fb.t1m50cm.m.cmsm[c("SG4G5ID", "t1m50cm", "PreL3", "PreL2")]
shak.456.fb.t2m50cm.m.cmsm <- shak.456.fb.t2m50cm.m.cmsm[c("SG4G5ID", "t2m50cm", "PreL3t2", "PreL2t2")]

## 児童偏差得点を求める(t1m50 - t1m50cm)(PreL1)
shak.456.dummy <- merge(shak.456.fb.t1m50cm.m.cmsm, shak.456.fb.t2m50cm.m.cmsm, by="SG4G5ID")
shak.456 <- merge(shak.456.fb, shak.456.dummy, by="SG4G5ID")
shak.456 <- transform(shak.456, PreL1 = (t1m50 - t1m50cm))
shak.456 <- transform(shak.456, PreL1t2 = (t2m50 - t2m50cm))

## 学級規模と交互作用の変数をつくる
shak.456 <- transform(shak.456, CS45M24 = (csmean - 24))
shak.456 <- transform(shak.456, INTERACT = (CS45M24 * kfb))
shak.456 <- transform(shak.456, NCM1 = (nc-1))

# 学級別学級規模を拾う
each.cs.t1 <- h25.g4.hensei[c("sgcid", "pupil")]
each.cs.t2 <- h26.g5.hensei[c("sgcid", "pupil")]

## 変数名変更
colnames(each.cs.t1) <- c("sgcid.t1", "ecst1")
colnames(each.cs.t2) <- c("sgcid.t2", "ecst2")

## マージする
shak.456.ecs1 <- merge(shak.456, each.cs.t1, by="sgcid.t1")
shak.456.ecs <- merge(shak.456.ecs1, each.cs.t2, by="sgcid.t2")

## 24で引く
shak.456.ecs <- transform(shak.456.ecs, ecst1m24 = ecst1-24)
shak.456.ecs <- transform(shak.456.ecs, ecst2m24 = ecst2-24)
shak.456.ecs <- transform(shak.456.ecs, cs.t1.m.m24 = cs.t1.m-24)
shak.456.ecs <- transform(shak.456.ecs, cs.t2.m.m24 = cs.t2.m-24)

##時点別の学級規模とフィードバックの交互作用をつくる
shak.456.ecs <- transform(shak.456.ecs, INTER.t1 = (ecst1m24 * kfb.t1))
shak.456.ecs <- transform(shak.456.ecs, INTER.t2 = (ecst2m24 * kfb.t2))
nrow(data.frame(unique(shak.456.ecs$sid)))
## [1] 52

クラスサイズ変動の状況を確認する

cs.t1.m <- data.frame(unique(shak.456.ecs[c("sid", "cs.t1.m")]))
cs.t2.m <- data.frame(unique(shak.456.ecs[c("sid", "cs.t2.m")]))

cs.t12.m <- dplyr::inner_join(cs.t1.m, cs.t2.m, by = "sid")
cs.t12.m <- dplyr::mutate(cs.t12.m, diff = cs.t1.m - cs.t2.m)

table(cs.t12.m$diff)
## 
##             -1.5               -1 -0.6666666666667             -0.5 
##                1                5                1                3 
## -0.3333333333334                0  0.3333333333333              0.5 
##                1               31                1                2 
##                1                2 10.3333333333333 
##                5                1                1
nrow(shak.456.ecs)
## [1] 1791