首先我创建了一个样本数据:
m1=matrix(sample(x = 1:10, size = 100, replace = T), nrow=10, ncol=10)
m2= c(sample(1:3, size=10, replace=T))
df = data.frame(cbind(m1, m2))
names(df) = c('var1', 'var2', 'var3', 'var4', 'var5', 'var6', 'var7', 'var8', 'var9', 'var10', 'var11')
它看起来象下面这样:
df
# var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11
# 1 10 5 1 9 1 6 7 3 8 3 1
# 2 10 10 3 9 4 10 4 3 10 6 1
# 3 10 9 3 6 9 6 1 5 10 1 2
# 4 7 5 2 8 10 9 9 3 3 4 2
# 5 9 8 8 10 1 6 7 7 3 7 2
# 6 5 5 1 1 4 1 6 6 8 2 1
# 7 3 6 9 6 9 1 1 8 6 8 2
# 8 3 10 10 2 2 10 4 7 7 2 2
# 9 4 10 1 9 4 4 2 2 6 8 3
# 10 3 10 2 5 5 10 1 7 6 4 2
然后,我会做调理:
df$ROWSUMS=NA
df[df$var11 == 1, 'ROWSUMS']=rowSums(df[df$var11 == 1,1:10])
df
# var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 ROWSUMS
# 1 10 5 1 9 1 6 7 3 8 3 1 53
# 2 10 10 3 9 4 10 4 3 10 6 1 69
# 3 10 9 3 6 9 6 1 5 10 1 2 NA
# 4 7 5 2 8 10 9 9 3 3 4 2 NA
# 5 9 8 8 10 1 6 7 7 3 7 2 NA
# 6 5 5 1 1 4 1 6 6 8 2 1 39
# 7 3 6 9 6 9 1 1 8 6 8 2 NA
# 8 3 10 10 2 2 10 4 7 7 2 2 NA
# 9 4 10 1 9 4 4 2 2 6 8 3 NA
# 10 3 10 2 5 5 10 1 7 6 4 2 NA
使用ifelse功能 – user1945827
我在这方面遇到了一些麻烦,因为我可以使用ifelse为var11创建缺失值,但我不是s如何使用varel的ifelse指定var1 - var10的缺失值。有没有一种方法可以根据var11的值在var1-var10上指定缺失值? – Calinadian
“ifelse(var11 == 1,rowSums(...),NA)''? –