我有一个数据帧,它有两列a和b,定义组和b是每个组的重复值。为了说明的目的,我添加了行号。从数据帧中选择“中间”行,总行数为偶数
> row.number <- c(1:7)
> a <- c(rep("A", 3), rep("B", 4))
> b <- c(rep(250,3), rep(80,4))
> df <-data.frame(row.number,a,b)
> df
row.number a b
1 1 A 250
2 2 A 250
3 3 A 250
4 4 B 80
5 5 B 80
6 6 B 80
7 7 B 80
现在,我想删除重复的行,只保留“中间”行。对于总行数不均匀的团队来说,这当然很简单,但对于总行数甚至不那么直接,在那里显然没有“中间”行。在这里,我想保留上面一行,这是靠近“中间”的结果应该是这样的:
> row.number <- c(2,5)
> a <- c("A","B")
> b <- c(250,80)
> df_solution <- data.frame(row.number,a,b)
> df_solution
row.number a b
1 2 A 250
2 5 B 80
我试图写一个ifelse功能,其中i)偶/参差不齐总的行数字进行评估(nrow %% 2 == 0
),ii)如果甚至那么保留“中间”以上的行,iii)如果不均匀,则保留中间行。
以这个post为起点,我尝试了各种解决方案,但是我无法编码任何对步骤ii)有意义的东西,即对于偶数行号定义中间的上部相邻行。
帮助将不胜感激!
为什么列#_The “中间” row_在'B'? –
我假设你的意思是第5行?我的想法很简单,B总共有4行,因此在这种情况下,“中间”在第5行和第6行之间。我总是想选择上排相邻的行,所以在这种情况下排第5行。 –
对于错字,您是对的,感谢您的回答。重要的是非常具体:) –