【发布时间】:2018-06-04 18:14:06
【问题描述】:
我正在尝试为一段数据编写一些更简洁/高效的代码。我有一个具有重复数据模式的数据框,请参阅下面的示例。
#Simple Sample Data
Date_2012<-c(NA,NA,NA)
X2<-c(1,1,1)
X3<-c(2,2,2)
XNA<-c(NA,NA,NA)
Date_2013<-c(NA,NA,NA)
X6<-c(3,3,3)
X7<-c(4,4,4)
df<-data.frame(Date_2012,X2,X3,XNA,Date_2013,X6,X7)
> df
Date_2012 X2 X3 XNA Date_2013 X6 X7 XNA
1 NA 1 2 NA NA 3 4 NA
2 NA 1 2 NA NA 3 4 NA
3 NA 1 2 NA NA 3 4 NA
我想用 X2 和 X3 进行一些计算,然后前进到 X6 和 X7 并进行相同的计算。这些用于计算的列总是彼此相距一个固定的数字,我想知道用什么来推进计算,无论是 for 循环还是其他什么。
#Calcuations, how to make this efficient? (loop?)
Calc<-df[,2]*df[,3]
Total2012<-sum(Calc)
Calc2<-df[,6]*df[,7]
Total2013<-sum(Calc2)
#Then continuously update the "Totals"
Totals<-c(Total2012,Total2013)
# Desired Result
> Totals
[1] 6 36 #.......... with results being added until columns exhausted
总体而言,我想继续推进数据框(可能是整数?)并在更新总计列表的同时进行这些计算,我将如何有效地做到这一点?
我想用一个函数来控制df[A]*df[b],但是列太多了,不能简洁,因为我必须多次调用该函数。
我错过了更好的方法吗?
感谢您的帮助。
【问题讨论】:
-
XNA列是什么? -
@userR 只是为了帮助将列分开一点,我的数据中有空白列,但对这个问题并不重要。
-
那么在每个
X1、X2列之后会有XNA列吗? -
是的,格式是Date,Data1,Data2,NA,Date,Data3,Data4,NA,Date,.......等等。 @user