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