2013-04-25 57 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