load the necessary packages

library(dplyr)
## Warning: 패키지 'dplyr'는 R 버전 4.3.2에서 작성되었습니다
## 
## 다음의 패키지를 부착합니다: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Create a vector containing words that at least 85% of the people judged to have shape bias.

word <- c(
    "기차", "배", "버스", "비행기", "소방차/불자동차", "썰매", "오토바이", "유모차", "자전거", "차/자동차", 
    "택시", "트럭", "헬리콥터", "공", "로봇", "연필", "책", "총", "풍선", "개", "개구리", "개미", "거북이", 
    "거위", "고양이", "곰", "공룡", "기린", "나비", "다람쥐", "닭", "당나귀", "동물", "돼지", "말", "물고기", 
    "뱀", "벌", "병아리", "부엉이", "비둘기", "사슴", "사자", "새", "소", "송아지", "악어", "양", "여우", 
    "염소", "오리", "원숭이", "쥐", "참새", "코끼리", "토끼", "펭귄", "하마", "호랑이", "가방", "구두", 
    "기저귀", "단추", "모자", "목걸이", "바지", "목도리", "신/신발", "양말", "옷/꼬까", "운동화", "잠바", 
    "잠옷", "장갑", "주머니", "치마", "코트/외투", "팬티", "허리띠", "계단", "냉장고", "목욕탕", "문", "방", 
    "베개", "부엌", "서랍", "세탁기", "소파", "옷장", "의자", "이불", "전자레인지", "지하철", "창문", "침대", 
    "텔레비전", "피아노", "화장실", "감", "감자", "계란/달걀", "고구마", "귤", "당근", "도너츠", "떡", 
    "라면", "메론", "밤", "배추", "복숭아", "사과", "수박", "옥수수", "케이크", "콩", "토마토", "핫도그", 
    "햄버거", "호떡", "호박", "고추", "귀", "눈", "다리", "등", "똥꼬", "머리", "목", "몸", "무릎", "발", 
    "발목", "발톱", "배", "배꼽", "뺨", "손", "손가락", "어깨", "얼굴", "엉덩이", "이/이빨", "입", "입술", 
    "코", "턱", "팔", "허리", "혀", "가위", "그릇", "망치", "못", "병", "비누", "빗", "빗자루", "상자", 
    "수건", "숟가락", "시계", "쓰레기통/휴지통", "안경", "열쇠", "옷걸이", "우산", "쟁반", "전화", "접시", 
    "젓가락", "지갑", "청소기", "칫솔", "카메라", "칼", "컵", "포크", "휴지", "그네", "깃발", "꽃", "나무", 
    "달", "미끄럼틀", "사다리", "시소"
)

Read in the data that contains CDI responses.

shape <- read.csv(file.choose(),fileEncoding="utf-8") #interactively choose the csv file
shape.ori <- shape
colnames(shape) # 칼럼 19에서 49까지가 CDI 질문
##  [1] "타임스탬프"                                                                                                                                                                                     
##  [2] "본.검사지를.복제..송신..출판..배포..방송.기타.방법에.의하여.영리목적으로.이용하거나.제3자에게.이용하게.하여서는.안됩니다."                                                                      
##  [3] "피검자의.개인정보는.검사결과.수집과.통보의.목적으로.활용되며..피검자의.사전동의.없이.개인정보를.외부에.제공하지.않습니다."                                                                      
##  [4] "나는.이.연구에.참여하는.것에.대하여.자발적으로.동의하며..어떠한.강제나.부당한.영향을.받지.않았습니다."                                                                                          
##  [5] "어머니의.나이"                                                                                                                                                                                  
##  [6] "어머니의.직업"                                                                                                                                                                                  
##  [7] "나는.이.연구에서.수집되는.나에.대한.정보는.연구.목적.이외에는.사용되지.않으며.현행.법률과.연구윤리심사위원회.규정이.허용하는.범위.내에서.연구자가.수집하고.처리한다는.것을.이해합니다."         
##  [8] "나는.언제라도.이.연구의.참여를.철회할.수.있고..이러한.결정이.나에게.어떠한.불이익도.되지.않을.것이라는.것을.알고.있습니다."                                                                     
##  [9] "아동.성별"                                                                                                                                                                                      
## [10] "아동.생일"                                                                                                                                                                                      
## [11] "검사.날짜"                                                                                                                                                                                      
## [12] "보호자.연락처"                                                                                                                                                                                  
## [13] "보호자.이메일"                                                                                                                                                                                  
## [14] "아버지의.나이"                                                                                                                                                                                  
## [15] "아버지의.직업"                                                                                                                                                                                  
## [16] "아버지의.교육수준"                                                                                                                                                                              
## [17] "아버지의.월별평균소득"                                                                                                                                                                          
## [18] "어머니의.교육수준"                                                                                                                                                                              
## [19] "어머니의.월별평균소득"                                                                                                                                                                          
## [20] "주양육자는.어머니를.비롯하여.아동을.잘.알고.있는.사람이어야.합니다."                                                                                                                            
## [21] "아동의.능력을.과대평가하지.않도록.합니다."                                                                                                                                                      
## [22] "표현하지.않는.낱말을.표현했다고.하거나..많이.들려주었거나.아이에게.친숙한.물건이라고.표현했다고.잘못.체크하지.않도록.합니다."                                                                   
## [23] "아동의.능력을.과소평가하지.않도록.합니다."                                                                                                                                                      
## [24] "체크해야.할.낱말이.수백.개.이상이므로.뒤로.갈수록.어머니나.보호자가.다소.무성의하게.체크하는.경우가.있을.수.있습니다..그러므로.끝까지.아이를.위해.성심성의껏.체크할.수.있도록.합니다."          
## [25] "주위가.너무.소란스럽거나.다른.일을.하면서.같이.하면.제대로.표시하기.힘들기.때문에.어머니나.주양육자가.방해받지.않고.조용한.분위기에서.아이의.낱말을.표시할.수.있도록.합니다."                   
## [26] "X1..소리..11."                                                                                                                                                                                  
## [27] "X2..탈.것..13."                                                                                                                                                                                 
## [28] "X3..장난감.및.문구류..14."                                                                                                                                                                      
## [29] "X4..동물..41."                                                                                                                                                                                  
## [30] "X5..옷..20."                                                                                                                                                                                    
## [31] "X6..가구.및.방안..21."                                                                                                                                                                          
## [32] "X7..음식..58."                                                                                                                                                                                  
## [33] "X8..신체부위..31."                                                                                                                                                                              
## [34] "X9..가정용품..36."                                                                                                                                                                              
## [35] "X10..외부사물..26."                                                                                                                                                                             
## [36] "X11..일상생활..14."                                                                                                                                                                             
## [37] "X12..장소..25."                                                                                                                                                                                 
## [38] "X13..양..정도..14."                                                                                                                                                                             
## [39] "X14..사람..33."                                                                                                                                                                                 
## [40] "X15..의문사..11."                                                                                                                                                                               
## [41] "X16..동사..150."                                                                                                                                                                                
## [42] "X17..형용사..52."                                                                                                                                                                               
## [43] "X18..끝맺는.말..15."                                                                                                                                                                            
## [44] "X19..조사..12."                                                                                                                                                                                 
## [45] "X20..연결하는.말..6."                                                                                                                                                                           
## [46] "X21..위치..8."                                                                                                                                                                                  
## [47] "X22..시간..17."                                                                                                                                                                                 
## [48] "X23..대명사..7."                                                                                                                                                                                
## [49] "X24..돕는.말..8."                                                                                                                                                                               
## [50] "X1..우리.아이가.낱말을.붙여서.말합니까...예..이거.이뻐....물.줘.."                                                                                                                              
## [51] "X2..1.에서..가끔....종종..중.하나에.표시하셨다면.다음에.답하십시오...1.에서.안함에.표시하셨다면..2.는.안하셔도.됩니다...우리.아이가.최근에.말한.문장표현.중.가장.긴.것.세.가지를.적어.주십시오."
## [52] "X1..조사...가...는...도.를.명사.뒤에.붙인다..예를.들어..엄마가..아빠는..나도.처럼.조사를.붙여서.말한다."                                                                                        
## [53] "X2....어...지...다...네.를.사용하여.어미를.변화시킨다..예를.들어..먹어..먹지..먹네....커..크지..크다..크네.처럼.어미변화를.시킨다."                                                             
## [54] "X3....는...야.와.같은.어미를.낱말과.낱말을.연결하기.위해.적절하게.사용한다..예를.들어..먹는.거..먹어야.돼....가는.사람..가야.돼.에서처럼.표현한다."                                             
## [55] "X4..사건이.일어나는.때와.연관시켜.어미..ㄴ.은..는..ㄹ.을.를.적절하게.사용한다..예를.들어..먹은.거..먹는.거..먹을.거....본.거..보는.거..볼.거.를.사용한다."                                      
## [56] "X5...이..히..기..리.와.같은.피동형이나.사동형.접사를.사용한다..예를.들어..먹여..잡혔어..신겨.줘..울리네.와.같은.말을.사용한다."                                                                 
## [57] "X"                                                                                                                                                                                              
## [58] "X.1"                                                                                                                                                                                            
## [59] "X.2"                                                                                                                                                                                            
## [60] "X.3"                                                                                                                                                                                            
## [61] "X.4"                                                                                                                                                                                            
## [62] "X.5"                                                                                                                                                                                            
## [63] "X.6"                                                                                                                                                                                            
## [64] "X.7"                                                                                                                                                                                            
## [65] "X.8"                                                                                                                                                                                            
## [66] "X.9"                                                                                                                                                                                            
## [67] "X.10"                                                                                                                                                                                           
## [68] "X.11"                                                                                                                                                                                           
## [69] "X.12"                                                                                                                                                                                           
## [70] "X.13"                                                                                                                                                                                           
## [71] "X.14"                                                                                                                                                                                           
## [72] "X.15"                                                                                                                                                                                           
## [73] "X.16"                                                                                                                                                                                           
## [74] "X.17"                                                                                                                                                                                           
## [75] "X.18"                                                                                                                                                                                           
## [76] "X.19"                                                                                                                                                                                           
## [77] "X.20"                                                                                                                                                                                           
## [78] "X.21"                                                                                                                                                                                           
## [79] "X.22"                                                                                                                                                                                           
## [80] "X.23"                                                                                                                                                                                           
## [81] "X.24"                                                                                                                                                                                           
## [82] "X.25"                                                                                                                                                                                           
## [83] "X.26"                                                                                                                                                                                           
## [84] "X.27"                                                                                                                                                                                           
## [85] "X.28"                                                                                                                                                                                           
## [86] "X.29"                                                                                                                                                                                           
## [87] "X.30"                                                                                                                                                                                           
## [88] "X.31"                                                                                                                                                                                           
## [89] "피검자는.아동을.잘.알고.있는.사람입니까."                                                                                                                                                       
## [90] "아동의.능력을.과대평가하지.않았습니까."                                                                                                                                                         
## [91] "표현하지.않는.낱말을.표현했다고.하거나..많이.들려주었거나.아이에게.친숙한.물건이라고.표현했다고.잘못.체크하지.않았습니까."                                                                      
## [92] "아동의.능력을.과소평가하지.않았습니까."                                                                                                                                                         
## [93] "끝까지.아이를.위해.성심성의껏.체크했습니까."                                                                                                                                                    
## [94] "피검자는.방해받지.않고.조용한.분위기에서.아이의.낱말을.표시했습니까."                                                                                                                           
## [95] "조선대학교.음성학연구실에서.진행되는.또.다른.연구에.참여할.의사가.있으십니까."                                                                                                                  
## [96] "Comments"
shape <- shape[1:dim(shape)[1], c(9, 26:56)]
# write.csv(shape, file="shape.csv", row.names=F)

Generate a column that contains shape-bias words

Figure out what columns contain words. We can see that column2 through column32 contains responses.

colnames(shape) # 25 돕는말까지가 어휘 응답
##  [1] "아동.성별"                                                                                                                                                                                      
##  [2] "X1..소리..11."                                                                                                                                                                                  
##  [3] "X2..탈.것..13."                                                                                                                                                                                 
##  [4] "X3..장난감.및.문구류..14."                                                                                                                                                                      
##  [5] "X4..동물..41."                                                                                                                                                                                  
##  [6] "X5..옷..20."                                                                                                                                                                                    
##  [7] "X6..가구.및.방안..21."                                                                                                                                                                          
##  [8] "X7..음식..58."                                                                                                                                                                                  
##  [9] "X8..신체부위..31."                                                                                                                                                                              
## [10] "X9..가정용품..36."                                                                                                                                                                              
## [11] "X10..외부사물..26."                                                                                                                                                                             
## [12] "X11..일상생활..14."                                                                                                                                                                             
## [13] "X12..장소..25."                                                                                                                                                                                 
## [14] "X13..양..정도..14."                                                                                                                                                                             
## [15] "X14..사람..33."                                                                                                                                                                                 
## [16] "X15..의문사..11."                                                                                                                                                                               
## [17] "X16..동사..150."                                                                                                                                                                                
## [18] "X17..형용사..52."                                                                                                                                                                               
## [19] "X18..끝맺는.말..15."                                                                                                                                                                            
## [20] "X19..조사..12."                                                                                                                                                                                 
## [21] "X20..연결하는.말..6."                                                                                                                                                                           
## [22] "X21..위치..8."                                                                                                                                                                                  
## [23] "X22..시간..17."                                                                                                                                                                                 
## [24] "X23..대명사..7."                                                                                                                                                                                
## [25] "X24..돕는.말..8."                                                                                                                                                                               
## [26] "X1..우리.아이가.낱말을.붙여서.말합니까...예..이거.이뻐....물.줘.."                                                                                                                              
## [27] "X2..1.에서..가끔....종종..중.하나에.표시하셨다면.다음에.답하십시오...1.에서.안함에.표시하셨다면..2.는.안하셔도.됩니다...우리.아이가.최근에.말한.문장표현.중.가장.긴.것.세.가지를.적어.주십시오."
## [28] "X1..조사...가...는...도.를.명사.뒤에.붙인다..예를.들어..엄마가..아빠는..나도.처럼.조사를.붙여서.말한다."                                                                                        
## [29] "X2....어...지...다...네.를.사용하여.어미를.변화시킨다..예를.들어..먹어..먹지..먹네....커..크지..크다..크네.처럼.어미변화를.시킨다."                                                             
## [30] "X3....는...야.와.같은.어미를.낱말과.낱말을.연결하기.위해.적절하게.사용한다..예를.들어..먹는.거..먹어야.돼....가는.사람..가야.돼.에서처럼.표현한다."                                             
## [31] "X4..사건이.일어나는.때와.연관시켜.어미..ㄴ.은..는..ㄹ.을.를.적절하게.사용한다..예를.들어..먹은.거..먹는.거..먹을.거....본.거..보는.거..볼.거.를.사용한다."                                      
## [32] "X5...이..히..기..리.와.같은.피동형이나.사동형.접사를.사용한다..예를.들어..먹여..잡혔어..신겨.줘..울리네.와.같은.말을.사용한다."

Generate a column that contains all words in the responses, i.e., child’s lexicon. Let’s try with one row.

# shape$lexicon[1] <- paste(c(shape[1, 2:25]), collapse = ", ")

This works for one row. Now apply the concatenation operation to all rows in the dataframe.

 shape$lexicon <- apply(shape[, 2:25], 1, function(row) paste(row, collapse = ", "))
#shape$lexicon <- do.call(paste, c(shape[2:25], sep = ", "))

In R, the apply function is used to apply a function over the margins of an array or matrix. Here are the arguments of the apply function:

X (Required): The array or matrix over which the function will be applied. MARGIN (Required): An integer vector indicating which margins should be retained. It can be 1 for applying the function over rows, 2 for applying the function over columns, or c(1, 2) for applying the function over both rows and columns. FUN (Required): The function to be applied. It can be a built-in function, a user-defined function, or an anonymous function.

shape$lexicon now contains the concatenated strings for each row from columns 2 to 32

Now, generate a column called subset that contains only the shape words in the lexicon

shape$subset <- sapply(strsplit(shape$lexicon, ", "), function(x) {
  common_words <- intersect(x, word)
  if (length(common_words) > 0) {
    paste(common_words, collapse = ", ")
  } else {
    ""
  }
})

In this code:

strsplit(shape$lexicon, ", ") splits the words in shape\(lexicon into individual elements based on the comma and space separator. `intersect(x, word)` finds the common elements between the split words and the word vector. The `sapply` function applies the function to each element of the split words in shape\)lexicon. paste(common_words, collapse = ", ") concatenates the common elements back into a comma-separated string. If there are no common words, “” is assigned to the subset column.

This will create a subset column in your shape dataframe containing the words that are members of the word vector for each row.

Let’s now generate a column called prop that shows the proportion of shape words in the child’s lexicon.

# Apply strsplit function to split words and calculate proportion
shape$prop <- sapply(1:nrow(shape), function(i) {
  lexicon_words <- unlist(strsplit(shape$lexicon[i], ", "))
  non_empty_lexicon_words <- lexicon_words[lexicon_words != ""]
  subset_words <- unlist(strsplit(shape$subset[i], ", "))
  
  # Calculate the proportion of words in subset relative to lexicon
  prop <- length(subset_words) / length(non_empty_lexicon_words)
  
  # Return the proportion
  return(prop)
})

Now save the results into a csv file.

write.csv(shape, file = "shape_result.csv", fileEncoding = "UTF-8", row.names = FALSE)