Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于对应日期向量的整数向量子集_R_Date_For Loop_Vector_Subset - Fatal编程技术网

R 基于对应日期向量的整数向量子集

R 基于对应日期向量的整数向量子集,r,date,for-loop,vector,subset,R,Date,For Loop,Vector,Subset,基本问题: 我试图根据日期向量对数据帧的向量进行子集,日期向量与我希望子集的向量相对应。以下面的数据框为例: Date Time Axis1 Day Sum.A1.Daily 1 6/12/10 5:00:00 20 1 NA 2 6/12/10 5:01:00 40 1 NA 3 6/12/10 5:02:00 50 1 NA 4 6/13/10 5:03:00 10 2

基本问题:

我试图根据日期向量对数据帧的向量进行子集,日期向量与我希望子集的向量相对应。以下面的数据框为例:

     Date    Time Axis1 Day Sum.A1.Daily
1 6/12/10 5:00:00    20   1           NA
2 6/12/10 5:01:00    40   1           NA
3 6/12/10 5:02:00    50   1           NA
4 6/13/10 5:03:00    10   2           NA
5 6/13/10 5:04:00    20   2           NA
6 6/13/10 5:05:00    30   2           NA
我想用每天的值之和填充右边的列。基本上,1:3,5应该=110,4:6,5应该=60

我知道有很多方法比我正在尝试的方法更聪明/更快/更好,例如,我的日期变量是一个划分为我不知道如何访问的级别的因素,但我正在尝试从头开始培养我的技能,并想知道如何:

以数据$Axis1的子集为例,它只获取第一天的值 获取数据$Axis1值的子集,该子集只获取第2天的值 对每天的值求和,并将其放入第5列,覆盖NA 我成功地执行了一个类似于此的函数来自动填充日向量,它最初充满了下面的NA值。但当我思考如何在子集中添加日期和b和时,我陷入了困境

提前感谢您的帮助-另外,请让我知道我的问题是否更清楚/我违反了cardinal stackoverflow规则。一般来说,我对R和编码社区非常陌生;我感谢你的帮助

dates <-c("6/12/10","6/13/10")
counts <- c(1:2)
x <- nrow(data)

for (i in 1:x) {
      for (j in 1:12) {
            if (data[i,1] == dates[j]) {
                  data[i,4] <- counts[j]
            }
      }
}
使用ave:

使用ave:


另一种方法是使用data.table

#Let's say df is your dataset
library(data.table)
dt = as.data.table(df)
dt = dt[, Sum.A1.Daily := sum(Axis1), by = Date]

另一种方法是使用data.table

#Let's say df is your dataset
library(data.table)
dt = as.data.table(df)
dt = dt[, Sum.A1.Daily := sum(Axis1), by = Date]
您不应该需要merge语句。dt[,Sum.A1.Daily:=sumAxis1,by=Date]您不应该需要merge语句。dt[,Sum.A1.每日:=sumAxis1,by=日期]