R 按时间顺序拆分数据帧 >头部(数据,25) Z时间 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
假设您的R 按时间顺序拆分数据帧 >头部(数据,25) Z时间 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,r,R,假设您的Time列具有您可以获得的所有可能值,并且它们是有序的,您可以使用以下方法。 我创建了自己的简单示例: > 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 1
Time
列具有您可以获得的所有可能值,并且它们是有序的,您可以使用以下方法。
我创建了自己的简单示例:
> 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)
}
dt=read.表格(文本=
“Z时间
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“,收割台=T)
dt
#Z时间
# 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
#添加时间id列
dt$Time\u id=作为数值(dt$Time)
dt
#Z时间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
#每2个值标记一次(因为每次要将2个连续值分组)
中断=顺序(最小值(dt$时间id),最大值(dt$时间id),2)
#查找表以帮助您对时间值进行分组
dt2=data.frame(Time\u id=unique(dt$Time\u id))
dt2$flag=ifelse(dt2$Time\U id%以%的间隔表示,1,0)
dt2$group=cumsum(dt2$flag)
dt2
#时间标识标志组
# 1 1 1 1
# 2 2 0 1
# 3 3 1 2
# 4 4 0 2
#加入分组信息
dt3=合并(dt,dt2,by=“Time\u id”)
dt3
#时间标识Z时间标志组
# 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我认为最简单的方法是创建另一个列,将秒40和41组合为1,42和43组合为2,以此类推,然后按原样使用函数:df_list Perfect AntoniosK!非常感谢你。
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)
}