我的数据有22个变量。这是一个简化的样本。变量包括x1、x2、y1_、y2_。我想要创建一个新的变量。变量值为x1*y1_+x2*y2_。守则如下:
df <- data.frame(x1=c(0,0,0,1),x2=c(0,0,0,1),y1_=c(3,0,2,1),y2_=c(1,0,0,1))
df$var <- df$x1*df$y1_+df$x2*df$y2_如果没有。变量为22,以上代码不合理。那么,如何得到这个变量呢?
发布于 2022-11-18 14:46:54
根据列名拆分数据,然后乘,然后逐行求和:
x <- colnames(df)
df$var <- rowSums(df[, grepl("^x", x)] * df[, grepl("^y", x)])
df
# x1 x2 y1_ y2_ var
# 1 0 0 3 1 0
# 2 0 0 0 0 0
# 3 0 0 2 0 0
# 4 1 1 1 1 2https://stackoverflow.com/questions/74491279
复制相似问题