R:折叠行并根据数据框中的条件更改值

R:折叠行并根据数据框中的条件更改值,r,dplyr,row,collapse,R,Dplyr,Row,Collapse,我有一个数据集: structurelistnum=c12L,12L,代码=structure1:2,.Label=ca, b、 等级=系数,排名=c2414.52414.5,底部=c-0.0153795976572657, -0.00651997615327495,先前=c0.00121016455715892, -0.00016609624290187,全部之前=c-0.00057097382726524, -0.000771377162183913,row.names=cNA,-2L,cl

我有一个数据集:

structurelistnum=c12L,12L,代码=structure1:2,.Label=ca, b、 等级=系数,排名=c2414.52414.5,底部=c-0.0153795976572657, -0.00651997615327495,先前=c0.00121016455715892, -0.00016609624290187,全部之前=c-0.00057097382726524, -0.000771377162183913,row.names=cNA,-2L,class=data.frame

我想根据num和ranking来折叠这两行,因为它们是相同的,但会根据两行的列值bottom,previous,和of_all_previous应按顺序进行比较,意思是:如果它们相等,则转到下一列,如底部->上一列->of_all_previous中所示,并选择值较高的代码

对于提供的样本数据,代码b是因为底部列中的-0.0065199761532749503>-0.0153795976572656777

如果它们相等,则必须查看前面的列

我认为dplyr可能可以使用%>%来折叠行,但我找不到如何根据条件同时更改行

我希望输出如下所示:

            num   code ranking 
1            12    a  2414      

提前感谢。

也许,我们可以转向“长”格式并对行进行切片


也许,我们可以转向“长”格式并对行进行切片

一种方法可能是按num和ranking对_进行分组,以查看具有相同值且需要折叠的行

然后,将按降序排列进行比较的列,包括bottomprevious和of_all_previous。当这样做时,排序数据中的较高行将考虑列,以便在有关系时进行比较。

最后,您可以根据排序使用firstcode创建最终的_代码

library(tidyverse)

df %>%
  group_by(num, ranking) %>%
  arrange(-bottom, -previous, -of_all_previous) %>%
  mutate(final_code = ifelse(n() > 1, as.character(first(code)), as.character(code))) %>%
  slice(1) %>%
  select(num, code, ranking)
一种方法可能是按num和ranking对_进行分组,以查看具有相同值且需要折叠的行

然后,将按降序排列进行比较的列,包括bottomprevious和of_all_previous。当这样做时,排序数据中的较高行将考虑列,以便在有关系时进行比较。

最后,您可以根据排序使用firstcode创建最终的_代码

library(tidyverse)

df %>%
  group_by(num, ranking) %>%
  arrange(-bottom, -previous, -of_all_previous) %>%
  mutate(final_code = ifelse(n() > 1, as.character(first(code)), as.character(code))) %>%
  slice(1) %>%
  select(num, code, ranking)

抱歉,它实际上不是J.NKENcan您可以显示预期的输出格式抱歉,它实际上不是J.NKENcan您可以显示预期的输出格式可能有一种情况,第一列底部的值将相等,如果是这样,我希望代码也测试其余的列。这可能吗?可能有一种情况,第一列底部的值将相等,如果是这样,我希望代码也测试其余的列。这可能吗?