r - 如何根据最后两行的值对 data.frame 进行子集化?
问题描述
###原始数据
df1 <- data.frame(a=c(2,2,5,5,7), b=c(1,5,4,7,6))
df2 <- data.frame(a=c(2,2,5,5,7,7), b=c(1,5,4,7,6,3))
当最后两行的a列值不相等时(这里第4行不等于第5行,即5!= 7),我只想对最后一行进行子集化。
#输入
> df1
a b
1 2 1
2 2 5
3 5 4
4 5 7
5 7 6
#输出
> df1
a b
1 7 6
当最后两行的a列值相等时(这里第5行等于第6行,即7=7,我想对最后两行进行子集化
#输入
> df2
a b
1 2 1
2 2 5
3 5 4
4 5 7
5 7 6
6 7 3
#输出
> df2
a b
1 7 6
2 7 3
解决方案
您可以编写一个函数来检查a
column 的最后两行值:
return_rows <- function(data) {
n <- nrow(data)
if(data$a[n] == data$a[n - 1])
tail(data, 2)
else tail(data, 1)
}
return_rows(df1)
# a b
#5 7 6
return_rows(df2)
# a b
#5 7 6
#6 7 3
推荐阅读
- github - Arduino 代码卡在 Wire.endTransmission() 行
- r - 使用ggplot2覆盖纬度长点数据和shp数据
- c++ - 由于 sys/types.h,STAR-Fusion 安装失败
- reactjs - 零(0)未显示在jsx中
- javascript - 如何在 react native 和 graphql apollo api 中进行身份验证
- graphql - HotChocolate GraphQL 中的类型继承
- ruby-on-rails - 如何在 Rails 中为 STI 类的子级创建“序列归档”?
- google-apps-script - 脚本不断循环谷歌脚本
- javascript - HLS.js 可以将视频数据通过管道传输到 WebSocket 连接,而不是在 HTML 播放器中显示吗?
- python - 在 Tkinter 中使用远程 PostgreSQL