Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 按时间顺序拆分数据帧 >头部(数据,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 - Fatal编程技术网

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)
}