繁体   English   中英

根据R中另一个变量的值创建一个变量的rowSum

[英]Creating rowSums of one variable conditional on the value of another variable in R

我希望使用R中的rowSums函数计算var1至var10的总和,但仅适用于var11等于1的行。

我尝试对数据进行子集设置以仅为var11等于1的数据创建var1-var10的总和,然后将我的原始数据帧与子集数据帧合并。 问题是,这导致我的主数据集排除了var11等于1的所有变量的所有行,而我想保留整个数据集的行,但仅将它们指定为NA var1-var10。

首先,我创建一个样本数据:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM