对于兄弟数据,我试图创建一个循环,通过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
答案 0 :(得分: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