【发布时间】:2016-11-20 01:07:05
【问题描述】:
我正在使用 csv 文件,并且我有一个名为“statistics_lastLocatedTime”的列,如图所示 csv file image 我想从第一行中减去第二行“statistics_lastLocatedTime”;从第二行开始的第三行,以此类推直到最后一行,然后将所有这些差异存储在单独的列中,然后将该列与其他相关列合并,如下面的代码所示:
##select related features
data <- read.csv("D:/smart tech/store/2016-10-11.csv")
(columns <- data[with(data, macAddress == "7c:11:be:ce:df:1d" ),
c(2,10,11,38,39,48,50) ])
write.csv(columns, file = "updated.csv", row.names = FALSE)
## take time difference
date_data <- read.csv("D:/R/data/updated.csv")
(dates <- date_data[1:40, c(2)])
NROW(dates)
for (i in 1:NROW(dates)) {
j <- i+1
r1 <- strptime(paste(dates[i]),"%Y-%m-%d %H:%M:%S")
r2 <- strptime(paste(dates[j]),"%Y-%m-%d %H:%M:%S")
diff <- as.numeric(difftime(r1,r2))
print (diff)
}
## combine time difference with other related columns
combine <- cbind(columns, diff)
combine
现在的问题是我能够获得行的差异,但无法将这些值存储为一列,然后将该列与其他相关列组合。请帮我。提前致谢。
【问题讨论】:
-
为什么要将
date_data过滤到前 40 行?这将无法 cbind 回columns。 -
实际上 macAddress == "7c:11:be:ce:df:1d" 中的总行数只有 40 行,如果我使用 (dates
-
您想计算
statistics_lastLocatedTime中的差异,并将该向量存储回数据框中。 -
不需要 for 循环,
diff()可以对向量进行操作。无需重复将每对日期时间从字符串转换为日期时间,只需使用read.csv()将它们作为日期时间读取
标签: r csv datetime diff date-arithmetic