我有一个类似于以下内容的数据框:
col1 col2
1 10
1 30
2 60
3 20
3 12
3 51
3 11
当 col2 中的值大于 50 时,我想将此数据帧分成块:
dataframe #1
col1 col2
1 10
1 30
2 60
dataframe #2
col1 col2
3 20
3 12
3 51
dataframe #3
col1 col2
3 11
我努力了split
功能,但它不能用于此任务。我想知道是否有一个通用函数可以实现这一点?
您可以使用cumsum
in split
,有很多rev
ing 以包含上一组中 col2 > 50 的行
rev(split(df, rev(cumsum(rev(df$col2 > 50)))))
#@joran method, (same result, except for names):
split(df, cumsum(df$col2 > 50) - (df$col2 > 50))
Output:
# $`2`
# col1 col2
# 1: 1 10
# 2: 1 30
# 3: 2 60
#
# $`1`
# col1 col2
# 1: 3 20
# 2: 3 12
# 3: 3 51
#
# $`0`
# col1 col2
# 1: 3 11
没有所有的rev
你明白了吗
split(df, cumsum(df$col2 > 50))
# $`0`
# col1 col2
# 1: 1 10
# 2: 1 30
#
# $`1`
# col1 col2
# 1: 2 60
# 2: 3 20
# 3: 3 12
#
# $`2`
# col1 col2
# 1: 3 51
# 2: 3 11
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)