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

标签 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

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

df$new_value <- c(3,2,1,NA,2,1)

因此,所有列的顺序都是相同的,对于 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

关于对数据框中的单个列在另一列的每个级别内重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48540074/

相关文章:

python - 将数据帧年份和月份合并到新对象Python中

r - 根据一个数据框中其他值的总和计算一个值

python - 将不规则列表的单列数据框分解为多列

javascript - 数据表的复杂 R Shiny 输入绑定(bind)问题

windows - R csv.bz2 Shell Windows 计算行数

r - 限制geom_line的x轴范围(由斜率和截距定义)

python - 在 pandas df 中查找 A 列中的 True 值是否是他自 B 列中最后一个 True 以来的第一次出现

r - 从 R 中的多个 JPEG 生成 PDF

r - ggplot2 : Color One Category Separately

python - 将 Pandas 数据框的多列与具有不同长度和索引的另一个数据框的一列进行比较