2015-12-04 44 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

非常感謝!現在我可以完成我的項目! –

相關問題