2015-12-04 43 views
-3

数据集被用于在该谷歌片链路 https://docs.google.com/spreadsheets/d/1eV33Sgx_UVtk2vDtNBc4Yqs_kQoeffY0oj5gSCq9rCs/edit#gid=1959019385&vpid=A1具有相同的数据集内相同的值可变的列组合成一个新的变量

AMC.dataset$ExamMC.A<-surveySP15$Exams_A 
AMC.dataset$ExamMC.A<-factor(NA, levels=c("TRUE", "FALSE")) 
AMC.dataset$ExamMC.A[AMC.dataset$Exams_A=="1 time"|AMC.dataset$Exams_A=="2-4 times"|AMC.dataset$Exams_A==">4 times"]<-"TRUE" 
AMC.dataset$ExamMC.A[AMC.dataset$Exams_A=="0 times"]<-"FALSE" 
AMC.dataset$ExamMC.A=as.logical(AMC.dataset$ExamMC.A) 

我使用这些5行的代码重新编码的所有9 Exams_A到Exams_I变量转化为逻辑二进制结果为“真”的那些已经为这9个变量中的任何一个回答了1次或更多次的人。我想将所有这些变量组合到数据集中的新列中,对于每个观察行,如果在整行中9个检查_A至I中的任何一个都有“真”,则新变量结果将被视为“真实”,这意味着他们至少有一次承诺记录在数据集中的任何9种类型的考试学术不端行为。如果在观察行中没有真正的结果,我希望新的变量结果为“假”,这意味着他们(观察行)从未提交过考试学术不端行为

我对这个新变量的代码是什么

surveySP15$ExamMC = any(surveySP15$ExamMC.A, surveySP15$ExamMC.B, surveySP15$ExamMC.C, surveySP15$ExamMC.D, surveySP15$ExamMC.E, surveySP15$ExamMC.F, surveySP15$ExamMC.G, surveySP15$ExamMC.H, surveySP15$ExamMC.I) 

但是这个设置似乎是由字符串中的最后一个变量的情况下(AMC.dataset $ ExamMC.I)覆盖

+2

请出示重复的例子和预期输出中 – akrun

+0

原来的9个变量值最初有4个不同等级值“0次”,“1周时间”,“ 2-4倍“,”> 4倍“,我记录了这9个变量以产生真值,如果该值为1倍或更多,所以”1次“,”2-4倍“和”> 4倍“都产生了逻辑结果“TRUE”和“0次”值产生了“FALSE”的结果, –

+0

我想创建一个新变量,它结合了这些变量的所有九个结果,因此如果在一行中,9个变量中的任何一个一个确实的情况,新的变量将有一个真实的结果;但是,如果所有9个变量的结果都是错误的,那么当我希望这个新变量的结果为False时 –

回答

1

这里是做这件事的一种方法:

a <- c("0 times", "1 time", "2-4 times", ">4times") 
b <- rev(c("0 times", "1 time", "2-4 times", ">4times")) 
df <- data.frame(a, b) 
df2 <- apply(df, 2, function(x) x %in% "0 times") ## you can also use x == "0 times". 
## %in% allows using vectors, i.e. x %in% c("0 times", "1 times") 

apply(df2, 1, any) 
# [1] TRUE FALSE FALSE TRUE 

展开最后一行到您的data.frame:

dataset$new.variable <- apply(dataset[c("variable1.new", "variable2.new", 
"variable3.new", "variable4.new", "variable5.new", "variable6.new", 
"variable7.new", "variable8.new", "variable9.new")], 1, any) 
+0

非常感谢!现在我可以完成我的项目! –

相关问题