创建一组行并从这些行中选择最后一个组。
下面总共有25行-我想创建5个组-每个组将有5行,在完成分组后,我只选择最后一个组。
我不想使用切片或索引,因为它会是静态的,它应该自动选择最后一个组。
A B C
0 0 0
0 0 0
0 0 0
0 0 0
0.000342936 0 0
0.002743484 0 0.000355999
0.009259259 0 0.002847989
0.021947874 0.000342936 0.009611962
0.042866941 0.002743484 0.022783909
0.074074074 0.009259259 0.044499822
0.117626886 0.021947874 0.076895692
0.17558299 0.042866941 0.122107512
0.25 0.074074074 0.182271271
0.342935528 0.117626886 0.259522962
0.456447188 0.17558299 0.355998576
0.592592593 0.25 0.473834105
0.753429355 0.342935528 0.615165539
0.941015089 0.456447188 0.782128871
1.157407407 0.592592593 0.976860093
1.404189089 0.752980901 1.201011401
1.681043579 0.937427456 1.454299824
1.987179487 1.145299145 1.735958595
2.321805424 1.375962857 2.045220947
2.684129999 1.628785481 2.381320116
3.073361823 1.903133903 2.743489334
预期输出:
以上25行中的最后5行。
A B C
1.681043579 0.937427456 1.454299824
1.987179487 1.145299145 1.735958595
2.321805424 1.375962857 2.045220947
2.684129999 1.628785481 2.381320116
3.073361823 1.903133903 2.743489334
请帮助,在此先感谢。
答案 0 :(得分:2)
我们可以使用tail
no_of_groups <- 5
tail(df, nrow(df)/no_of_groups)
# A B C
#21 1.681044 0.9374275 1.454300
#22 1.987179 1.1452991 1.735959
#23 2.321805 1.3759629 2.045221
#24 2.684130 1.6287855 2.381320
#25 3.073362 1.9031339 2.743489
如果行数不能被floor
整除,我们可以将其包装在no_of_groups
中
#Removing one row
df <- df[-1, ]
tail(df, floor(nrow(df)/no_of_groups))
# A B C
#1.987179 1.145299 1.735959
#2.321805 1.375963 2.045221
#2.684130 1.628785 2.381320
#3.073362 1.903134 2.743489
这将仅返回最后一组中的最后4行。
答案 1 :(得分:0)
也许是这个吗?
q=read_table(" A B C
0 0 0
0 0 0
0 0 0
0 0 0
0.000342936 0 0
0.002743484 0 0.000355999
0.009259259 0 0.002847989
0.021947874 0.000342936 0.009611962
0.042866941 0.002743484 0.022783909
0.074074074 0.009259259 0.044499822
0.117626886 0.021947874 0.076895692
0.17558299 0.042866941 0.122107512
0.25 0.074074074 0.182271271
0.342935528 0.117626886 0.259522962
0.456447188 0.17558299 0.355998576
0.592592593 0.25 0.473834105
0.753429355 0.342935528 0.615165539
0.941015089 0.456447188 0.782128871
1.157407407 0.592592593 0.976860093
1.404189089 0.752980901 1.201011401
1.681043579 0.937427456 1.454299824
1.987179487 1.145299145 1.735958595
2.321805424 1.375962857 2.045220947
2.684129999 1.628785481 2.381320116
3.073361823 1.903133903 2.743489334")
q%>%
mutate(num=ceiling(row_number()/5))%>%
filter(num==max(num))%>%
select(-num)
# A tibble: 5 x 3
A B C
<dbl> <dbl> <dbl>
1 1.68 0.937 1.45
2 1.99 1.15 1.74
3 2.32 1.38 2.05
4 2.68 1.63 2.38
5 3.07 1.90 2.74