0

For the sibling data I am trying to create a loop that will run sib1 through sib10. I want to loop forward over each column & if the value is 174 I want to sum the columns and set it equal to 1. This way would be best to run my logistic regression code. My problem is that each sib1-sib10 are datasets not individual columns. I gave an example of sib1.
I hope this makes sense, I have been struggling with how to set up this type of loop.

Code:

   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
Simon O'Hanlon
  • 58,647
  • 14
  • 142
  • 184
Brianna Marie
  • 43
  • 1
  • 3
  • 1
    it's not clear what you want, give an example input and output – eddi Apr 25 '13 at 23:08
  • 1
    Welcome to Stack Overflow! Please add reproducible sample for good people here to help you. See http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – CHP Apr 26 '13 at 01:42
  • Where there is a 174 in the dataset I want to put a 1, then sum it across the columns. The final output should be 1 column with 0 and 1. – Brianna Marie Apr 28 '13 at 03:11

1 Answers1

0

You can do something like this

# 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 

Perhaps you want to add it to df as another column?

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
Simon O'Hanlon
  • 58,647
  • 14
  • 142
  • 184