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=日期]