嗨,我的数据框有多列,即前5列是我的元数据和 列(列数将是偶数)是需要计算的实际列
公式:(col6 * col9)+(col7 * col10)+(col8 * col11)
country<-c("US","US","US","US")
name <-c("A","B","c","d")
dob<-c(2017,2018,2018,2010)
day<-c(1,4,7,9)
hour<-c(10,11,2,4)
a <-c(1,3,4,5)
d<-c(1,9,4,0)
e<-c(8,1,0,7)
f<-c(10,2,5,6)
j<-c(1,4,2,7)
m<-c(1,5,7,1)
df=data.frame(country,name,dob,day,hour,a,d,e,f,j,m)
如果我有更多列,如何获得最终求和
我尝试使用以下代码
df$final <-(df$a*df$f)+(df$d*df$j)+(df$e*df$m)
答案 0 :(得分:0)
这是一种泛化计算的方法:
x <- ncol(df) - 5
df$final <- rowSums(df[6:(5 + x/2)] * df[(ncol(df) - x/2 + 1):ncol(df)])
# country name dob day hour a d e f j m final
# 1 US A 2017 1 10 1 1 8 10 1 1 19
# 2 US B 2018 4 11 3 9 1 2 4 5 47
# 3 US c 2018 7 2 4 4 0 5 2 7 28
# 4 US d 2010 9 4 5 0 7 6 7 1 37
答案 1 :(得分:0)
使用索引的另一种方法:
>start<-6
>amount<-(ncol(df)-start)/2
>df$final<-rowSums(df[start:(start+amount-1)]*df[(start+amount):(start+2*amount-1)])
>df
country name dob day hour a d e f j m final
1 US A 2017 1 10 1 1 8 10 1 1 19
2 US B 2018 4 11 3 9 1 2 4 5 47
3 US c 2018 7 2 4 4 0 5 2 7 28
4 US d 2010 9 4 5 0 7 6 7 1 37