r - 相对于数字的列序列拆分数据框
问题描述
我想根据序列列在多个数据帧中剪切以下一个
sequence Var1 Var2 Var3 Var4
5 0.003838776 0.003687773 0.003838776 0.003838776
4 0.002551022 0.001226242 0.002551022 0.002551022
3 -0.011531198 -0.011090687 -0.011497312 -0.011518828
2 0.012804272 0.011090687 0.012540644 0.012704180
1 0.010126669 0.009756175 0.010041170 0.010092812
0 0.010025147 0.009661911 0.009913382 0.009978835
5 z z z z
4 0.002551022 0.001226242 0.002551022 0.002551022
3 -0.011531198 -0.011090687 -0.011497312 -0.011518828
2 0.012804272 0.011090687 0.012540644 0.012704180
1 0.010126669 0.009756175 0.010041170 0.010092812
0 0.010025147 0.009661911 0.009913382 0.009978835
5 a b c 0.003838776
3 a 0.011090687 -0.011497312 -0.011518828
2 0.012804272 0.011090687 0.012540644 0.012704180
1 0.010126669 0.009756175 0.010041170 0.010092812
0 0.010025147 0.009661911 0.009913382 0.009978835
我想从 5 到 0 的列序列中有多个数据框:
例如:
sequence Var1 Var2 Var3 Var4
5 0.003838776 0.003687773 0.003838776 0.003838776
4 0.002551022 0.001226242 0.002551022 0.002551022
3 -0.011531198 -0.011090687 -0.011497312 -0.011518828
2 0.012804272 0.011090687 0.012540644 0.012704180
1 0.010126669 0.009756175 0.010041170 0.010092812
0 0.010025147 0.009661911 0.009913382 0.009978835
将是第一个,
5 z z z z
4 0.002551022 0.001226242 0.002551022 0.002551022
3 -0.011531198 -0.011090687 -0.011497312 -0.011518828
2 0.012804272 0.011090687 0.012540644 0.012704180
1 0.010126669 0.009756175 0.010041170 0.010092812
0 0.010025147 0.009661911 0.009913382 0.009978835
将是第二个并且
5 a b c 0.003838776
3 a 0.011090687 -0.011497312 -0.011518828
2 0.012804272 0.011090687 0.012540644 0.012704180
1 0.010126669 0.009756175 0.010041170 0.010092812
0 0.010025147 0.009661911 0.009913382 0.009978835
将是第三个:
有时在 0 和 5 之间缺少一行,例如在最后一个拆分中缺少第 4 行。
解决方案
如果序列 0 没有丢失,您可以尝试:
library(zoo)
library(dplyr)
df %>% mutate(x=ifelse(sequence!=0,NA,row_number()),
x=na.locf(x,fromLast=TRUE)) %>%
replyr::replyr_split("x")
#$`6`
# sequence Var1 Var2 Var3 Var4 x
#1 5 0.003838776 0.003687773 0.003838776 0.003838776 6
#2 4 0.002551022 0.001226242 0.002551022 0.002551022 6
#3 3 -0.011531198 -0.011090687 -0.011497312 -0.011518828 6
#4 2 0.012804272 0.011090687 0.012540644 0.012704180 6
#5 1 0.010126669 0.009756175 0.010041170 0.010092812 6
#6 0 0.010025147 0.009661911 0.009913382 0.009978835 6
#$`12`
# sequence Var1 Var2 Var3 Var4 x
#1 5 z z z z 12
#2 4 0.002551022 0.001226242 0.002551022 0.002551022 12
#3 3 -0.011531198 -0.011090687 -0.011497312 -0.011518828 12
#4 2 0.012804272 0.011090687 0.012540644 0.012704180 12
#5 1 0.010126669 0.009756175 0.010041170 0.010092812 12
#6 0 0.010025147 0.009661911 0.009913382 0.009978835 12
#$`17`
# sequence Var1 Var2 Var3 Var4 x
#1 5 a b c 0.003838776 17
#2 3 a 0.011090687 -0.011497312 -0.011518828 17
#3 2 0.012804272 0.011090687 0.012540644 0.012704180 17
#4 1 0.010126669 0.009756175 0.010041170 0.010092812 17
#5 0 0.010025147 0.009661911 0.009913382 0.009978835 17
推荐阅读
- angular - 如果在等待的可观察对象之一中有一个 flatMap,RxJS forkjoin 将停止订阅
- javascript - jQuery 对话框弹出窗口在弹出窗口右上角的关闭框中没有“x”
- javascript - 当 Null 插入到 d3 中的属性函数中时,它在做什么?
- c# - 如何通过datagrid鼠标双击在新窗口中填充组合框
- java - androidx BottomNavigationView 未显示
- mobx - 与观察者 hoc 相比,为什么 useObserver 钩子不会重新渲染两次?
- python - 从字符串中删除变量号
- java - 如何在 java 中使用 CommandLineJobRunner 构建多个集成测试用例
- c# - 即使 HTTPGetEnabled 设置为 true,也无法访问 WSDL
- javascript - postMessage() 到子窗口无法发布