> head(data,25)
Z Time
1 682 14:33:40
2 -2 14:33:40
3 -172 14:33:40
4 -300 14:33:40
5 -331 14:33:40
6 -172 14:33:40
7 414 14:33:41
8 1028 14:33:41
9 871 14:33:41
10 407 14:33:41
11 -215 14:33:41
12 -527 14:33:41
13 -134 14:33:41
14 -77 14:33:41
15 -165 14:33:41
16 473 14:33:41
17 1089 14:33:41
18 808 14:33:41
19 -31 14:33:42
20 -488 14:33:42
21 -408 14:33:42
22 -268 14:33:42
23 -172 14:33:42
24 -79 14:33:42
25 310 14:33:42
df_list <- split(data, as.factor(data$Time))
for (i in seq_along(df_list)) {
filename = paste(i, ".csv")
write.csv(df_list[[i]], filename)
}
我已经使用此代码为每秒数据创建.csv文件(数据$ Time)。我的数据从14:33:40开始,到14:38:40(5分钟)结束。这段代码运行良好,给我301文件,从13:33:40开始(6行数据)和13:33:41(12行数据),13:33:42(12行数据),现在,我想做的,无法解决的问题是,每2秒连续数据创建一个.csv文件。所以第一个.csv将是13:33:40&amp; 13:33:41,第二个.csv将是13:33:42&amp; 13:33:43等我试图找到按顺序使用拆分功能的解决方案(每2秒)或按顺序粘贴数据帧(当前每秒拆分)(但是2)但是卡住了。任何帮助将不胜感激!
答案 0 :(得分:0)
假设您的Time
列具有您可以获得的所有可能值以及它们的订购,您可以使用以下方法。
我创建了自己的简单示例:
dt = read.table(text =
" Z Time
1 682 14:33:40
2 -2 14:33:40
3 414 14:33:41
4 1028 14:33:41
5 871 14:33:42
6 407 14:33:42
7 -215 14:33:43
8 -527 14:33:43", header=T)
dt
# Z Time
# 1 682 14:33:40
# 2 -2 14:33:40
# 3 414 14:33:41
# 4 1028 14:33:41
# 5 871 14:33:42
# 6 407 14:33:42
# 7 -215 14:33:43
# 8 -527 14:33:43
# add a time id column
dt$Time_id = as.numeric(dt$Time)
dt
# Z Time Time_id
# 1 682 14:33:40 1
# 2 -2 14:33:40 1
# 3 414 14:33:41 2
# 4 1028 14:33:41 2
# 5 871 14:33:42 3
# 6 407 14:33:42 3
# 7 -215 14:33:43 4
# 8 -527 14:33:43 4
# flag every 2 values (as you want to group 2 consecutive values each time)
breaks = seq(min(dt$Time_id),max(dt$Time_id), 2)
# look up table to help you with grouping Time values
dt2 = data.frame(Time_id = unique(dt$Time_id))
dt2$flag = ifelse(dt2$Time_id %in% breaks, 1, 0)
dt2$group = cumsum(dt2$flag)
dt2
# Time_id flag group
# 1 1 1 1
# 2 2 0 1
# 3 3 1 2
# 4 4 0 2
# join grouping info
dt3 = merge(dt,dt2,by="Time_id")
dt3
# Time_id Z Time flag group
# 1 1 682 14:33:40 1 1
# 2 1 -2 14:33:40 1 1
# 3 2 414 14:33:41 0 1
# 4 2 1028 14:33:41 0 1
# 5 3 871 14:33:42 1 2
# 6 3 407 14:33:42 1 2
# 7 4 -215 14:33:43 0 2
# 8 4 -527 14:33:43 0 2
df_list <- split(dt3, as.factor(dt3$group))
for (i in seq_along(df_list)) {
filename = paste(i, ".csv")
write.csv(df_list[[i]], filename)
}
如果您发现任何错误等,请告诉我它是否适用