2013-04-25 76 views
0

對於兄弟數據,我試圖創建一個將通過sib10運行sib1的循環。如果值爲174,我想循環遍歷每列&我想對列進行求和並將其設置爲1.這種方式最好運行我的邏輯迴歸代碼。我的問題是每個sib1-sib10都是數據集而不是單獨的列。我舉了一個sib1的例子。
我希望這是有道理的,我一直在努力如何設置這種類型的循環。通過多個數據集創建循環

代碼:

sibling=data.table(cbind((data[,'b16aa']),(data[,'b16ba']),(data[,'b16ca']),(data[,'b16da']),(data[,'b16ea']),(data[,'b16fa']),(data[,'b16ga']),(data[,'b16ha']),(data[,'b16ia']),(data[,'b16ja']))) 
    sib1=sibling[sibling$V1==174,] 
    sib2=sibling[sibling$V2==174,] 
    sib3=sibling[sibling$V3==174,] 
    sib4=sibling[sibling$V4==174,] 
    sib5=sibling[sibling$V5==174,]       
    sib6=sibling[sibling$V6==174,]       
    sib7=sibling[sibling$V7==174,] 
    sib8=sibling[sibling$V8==174,] 
    sib9=sibling[sibling$V9==174,] 
    sib10=sibling[sibling$V10==174,] 

SIB1:

 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
    1: 174 174 NA NA NA NA NA NA NA NA 
    2: 174 NA NA NA NA NA NA NA NA NA 
    3: 174 NA NA NA NA NA NA NA NA NA 
    4: 174 NA NA NA NA NA NA NA NA NA 
    5: 174 NA NA NA NA NA NA NA NA NA 
    6: 174 NA NA NA NA NA NA NA NA NA 
    7: 174 NA NA 174 NA 174 NA 174 NA NA 
    8: 174 NA NA NA NA NA NA NA NA NA 
    9: 174 NA NA NA NA NA NA NA NA NA 
    10: 174 NA NA NA NA NA NA NA NA NA 
+1

不清楚你想要什麼,舉個例子輸入輸出 – eddi 2013-04-25 23:08:49

+1

歡迎來到Stack Overflow!請爲這裏的優秀人士添加可重複的樣本以幫助您。請參閱http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – 2013-04-26 01:42:49

+0

如果數據集中存在174個要添加1的數據集,然後將其在列。最終的輸出應該是1列,0和1。 – 2013-04-28 03:11:51

回答

0

你可以做這樣的事情

# Your data as it appears in the question 
df <- structure(list(V1 = c(174L, 174L, 174L, 174L, 174L, 174L, 174L, 
174L, 174L, 174L), V2 = c(174L, NA, NA, NA, NA, NA, NA, NA, NA, 
NA), V3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), V4 = c(NA, 
NA, NA, NA, NA, NA, 174L, NA, NA, NA), V5 = c(NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA), V6 = c(NA, NA, NA, NA, NA, NA, 174L, 
NA, NA, NA), V7 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), 
    V8 = c(NA, NA, NA, NA, NA, NA, 174L, NA, NA, NA), V9 = c(NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA), V10 = c(NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA)), .Names = c("V1", "V2", "V3", 
"V4", "V5", "V6", "V7", "V8", "V9", "V10"), class = "data.frame", row.names = c("1:", 
"2:", "3:", "4:", "5:", "6:", "7:", "8:", "9:", "10:")) 

df 
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
#1: 174 174 NA NA NA NA NA NA NA NA 
#2: 174 NA NA NA NA NA NA NA NA NA 
#3: 174 NA NA NA NA NA NA NA NA NA 
#4: 174 NA NA NA NA NA NA NA NA NA 
#5: 174 NA NA NA NA NA NA NA NA NA 
#6: 174 NA NA NA NA NA NA NA NA NA 
#7: 174 NA NA 174 NA 174 NA 174 NA NA 
#8: 174 NA NA NA NA NA NA NA NA NA 
#9: 174 NA NA NA NA NA NA NA NA NA 
#10: 174 NA NA NA NA NA NA NA NA NA 


m <- as.matrix(df) 
m[m==174] <- 1 
colSums(m , na.rm = TRUE) 
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
10 1 0 1 0 1 0 1 0 0 

也許你想要將它添加到df作爲另一列?

df$ColTot <- colSums(m , na.rm = TRUE) 
df 
# V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 ColTot 
#1: 174 174 NA NA NA NA NA NA NA NA  10 
#2: 174 NA NA NA NA NA NA NA NA NA  1 
#3: 174 NA NA NA NA NA NA NA NA NA  0 
#4: 174 NA NA NA NA NA NA NA NA NA  1 
#5: 174 NA NA NA NA NA NA NA NA NA  0 
#6: 174 NA NA NA NA NA NA NA NA NA  1 
#7: 174 NA NA 174 NA 174 NA 174 NA NA  0 
#8: 174 NA NA NA NA NA NA NA NA NA  1 
#9: 174 NA NA NA NA NA NA NA NA NA  0 
#10: 174 NA NA NA NA NA NA NA NA NA  0