-1
Как бы вы оценили это с помощью только R-функций lapply(), sapply() и т. Д.?добавить столбец и вычислить общий балл для случаев, которые имеют как минимум 4 ответа
Добавить столбец (тревоги), чтобы провести общий балл
likert.scale.matrix <- cbind(scale.matrix.2, rep(NA, dim(scale.matrix.2)[1]))
dimnames(likert.scale.matrix) <- list(id = (mydata.clean$id),
c("general", "affective", "cognitive", "value", "difficulty", "anxiety"))
<!-- html table generated in R 3.1.1 by xtable 1.7-4 package -->
<!-- Sun Feb 22 14:44:01 2015 -->
<table border=1>
<tr> <th> </th> <th> general </th> <th> affective </th> <th> cognitive </th> <th> value </th> <th> difficulty </th> <th> anxiety </th> </tr>
<tr> <td align="right"> 3 </td> <td align="right"> 4.00 </td> <td align="right"> 4.00 </td> <td align="right"> 5.00 </td> <td align="right"> 4.00 </td> <td align="right"> 4.00 </td> <td align="right"> 21.00 </td> </tr>
<tr> <td align="right"> 34 </td> <td align="right"> 2.00 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 2.00 </td> <td align="right"> 2.00 </td> <td align="right"> 12.00 </td> </tr>
<tr> <td align="right"> 40 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 15.00 </td> </tr>
<tr> <td align="right"> 66 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 3.00 </td> <td align="right"> 4.00 </td> <td align="right"> 3.00 </td> <td align="right"> 16.00 </td> </tr>
<tr> <td align="right"> 67 </td> <td align="right"> 2.00 </td> <td align="right"> 4.00 </td> <td align="right"> 2.00 </td> <td align="right"> 2.00 </td> <td align="right"> 2.00 </td> <td align="right"> 12.00 </td> </tr>
</table>
вычислений общий балл за исключением случаев, которые имеют по крайней мере 4 ответа
for(i in 1:dim(likert.scale.matrix)[1]){
n <- 0 # number of responses
sum <- 0 # total statistics anxiety
for (j in 1:dim(likert.scale.matrix)[2]){
if(!is.na(likert.scale.matrix[i,j])){
# calculate total statistics anxiety
sum <- sum + likert.scale.matrix[i,j]
# increment number of responses
n <- n+1
}
}
# if the number of responses is 4 or more score is given
if(n >= 4) {likert.scale.matrix[i, 6] <- sum}
}
Я надеялся не использовать использование каких-либо петель и воспользоваться векторными ориентированными функциями АиРа, но не может понять, как поставить ограничение на сумме (если 4 из из 5 значений не NA, а затем вычислить сумму). –
if (apply (likert.scale.matrix [, 1: 5], 1, count)> = 4) { likert.scale.matrix [, "anxiety"] <- apply (likert.scale.matrix [, 1 : 5], 1, sum) } –
извинения, код, который я написал, не делает то, что вам нужно. Если вы rowSums (..., na.rm = TRUE) над соответствующими столбцами, то раз это будет с помощью as.numeric (rowSums (lik ...> 0, na.rm = TRUE))) –