对另一列的每个级别内的数据框中的单个列重新排序

ste*_*sou 2 r dataframe

可能这个问题的解决方案很容易,但我看不到它.这是我的示例数据框:

df <- data.frame(id=c(1,1,1,2,2,2), value=rep(1:3,2), level=rep(letters[1:3],2))
df[6,2] <- NA
Run Code Online (Sandbox Code Playgroud)

这是我想要创建的所需输出:

df$new_value <- c(3,2,1,NA,2,1)
Run Code Online (Sandbox Code Playgroud)

因此,所有列的顺序都相同,对于new_value列,value列顺序在列的每个级别内反转id.有任何想法吗?谢谢!

Moo*_*per 5

正如我理解你的问题,如果你只是想要在没有排序的情况下反转订单,那么你的数据是如何排序的巧合:

library(dplyr)
df %>% group_by(id) %>% mutate(new_value = rev(value)) %>% ungroup

# A tibble: 6 x 4
     id value  level new_value
  <dbl> <int> <fctr>     <int>
1     1     1      a         3
2     1     2      b         2
3     1     3      c         1
4     2     1      a        NA
5     2     2      b         2
6     2    NA      c         1
Run Code Online (Sandbox Code Playgroud)