我希望能检测出跨列的2s的特定模式,总共提供2个问题,即每个学生(Ids)在2个问题中有多少是正确的。
要求学生陈述6种旅行技术(斜道,李,早期,Wait48,太阳能和康恩)中的哪一种在5种天气情况中都高度适用。
正确答案是: Storm-Wait48,Lee-Lee,Persistent-Conn,早湿和太阳能,Ldry-Chute
如果学生根据上述重点正确地确定了高度适用的策略(由数字2表示),则他们将获得1分。如果他们在两种情况下都这样做,他们将获得2分。
# Note: the numbers relate to the student's selected responses as follows:
# 0= Not applicable, 1= Somewhat Applicable, 2= Highly applicable, NA =
Don't know
WeatherScen1 <- c('storm', 'persistent', 'wet', 'wet', 'storm', 'wind',
'Ldry')
Solar1 <- c(0, 1, 2, 0, 0, NA, 2)
Conn1 <- c(1, 2, 0, 2, 0, NA, 1)
Chute1 <- c(1, 1, 1, 2, 2, NA, 1)
Early1 <- c(0, 1, 2, 1, 1, NA, 2)
Wait481 <- c(2, 0, 0, 2, 1, NA, 2)
Lee1 <- c(1, 1, 1, 0, 1, NA, 1)
WeatherScen2 <- c('wet', 'wet', 'wind', 'storm', 'Ldry', 'storm',
'persistent')
Solar2 <- c(2, 2, 0, 0, 0, 1, 0)
Conn2 <- c(0, 0, 1, 1, 0, 1, 2)
Chute2 <- c(1, 1, 1, 1, 1, 1, 1)
Early2 <- c(2, 2, 1, 1, 1, 1, 0)
Wait482 <- c(0, 0, 1, 1, 1, 2, 0)
Lee2 <- c(1, 1, 2, 1, 1, 1, 0)
WeatherScenResp <- data.frame(WeatherScen1, Solar1, Conn1, Chute1, Early1,
Wait481, Lee1, WeatherScen2, Solar2, Conn2, Chute2, Early2, Wait482, Lee2)
View(WeatherScenResp)
Id WeatherScen1 Solar1 Conn1 Chute1 Early1 Wait481 Lee1...
1 Storm 0 1 1 0 2 1 ...
2 Persistent 1 2 1 1 0 1 ...
3 Wet 2 0 1 2 0 1 ...
4 Wet 0 2 2 1 2 0 ...
5 Storm 0 0 2 1 1 1 ...
6 Wind NA NA NA NA NA NA ...
7 Ldry 2 1 1 2 2 1 ...
...WeatherScen2 Solar2 Conn2 Chute2 Early2 Wait482 Lee2
...Wet 2 0 1 2 0 1
...Wet 2 0 1 2 0 1
...Wind 0 1 1 1 1 2
...Storm 0 1 1 1 1 1
...Ldry 0 0 1 1 1 1
...Storm 1 1 1 1 2 1
...Persistent 0 2 1 0 0 0
我如何创建一个名为“ TotalCorrect”的附加列,该列为学生1 2和3显示2分,为学生4和5显示0分,为学生6和7显示1分?
在此先感谢您的帮助
答案 0 :(得分:1)
使用我整理的数据,我可以向您展示这些原理:
# create dataframe
df <- data.frame(ID = 1:7, A1 = sample(0:2, 7, T), A2 = sample(0:2, 7, T))
# ID A1 A2
#1 1 1 0
#2 2 0 2
#3 3 2 1
#4 4 2 0
#5 5 2 0
#6 6 1 2
#7 7 2 1
现在遍历每一行并计算2的数量(第一列除外)
df$Count_2 <- apply(df[, -1], 1, function(x) length(x[x==2]))
这将遍历每一行,并获得确切的2s数。然后,您可以将该列除以2以获得点值,因为每个2指针都相当于1点:
df$points <- df$Count_2/2
这是你的工作吗?
编辑:
正如akrun在评论中指出的那样,rowMeans(df[-1] == 2)
比apply函数更好。