可能这个问题的解决方案很容易,但我看不到它.这是我的示例数据框:
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
.有任何想法吗?谢谢!
正如我理解你的问题,如果你只是想要在没有排序的情况下反转订单,那么你的数据是如何排序的巧合:
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)