使用 group_by 时重新排序 NA 的位置

标签 r dataframe dplyr na tibble

我想重新排序 NA 在列中的位置,在另一个分类变量的每个级别内。例如使用此数据框:

df <- data.frame(fact=c(1,1,1,2,2,2), id=rep(1:6), value=c(NA,44,23,NA,NA,76))

我想改变一个新列,如:
df$newvar <= c(44,23,NA,76,NA,NA)

我原以为以下会起作用,但它不会:
dfb <- df %>% group_by(fact) %>% mutate(newvar = df$value[order(is.na(df$value))])

关于我如何做到这一点的任何想法?

最佳答案

您应该删除 mutate 语句中的 df$ 部分,否则您指的是完整的列,而不是每组的列。所以这应该可以正常工作:

df %>% group_by(fact) %>% mutate(newvar = value[order(is.na(value))])

输出:
# A tibble: 6 x 4
# Groups: fact [2]
   fact    id value newvar
  <dbl> <int> <dbl>  <dbl>
1  1.00     1  NA     44.0
2  1.00     2  44.0   23.0
3  1.00     3  23.0   NA  
4  2.00     4  NA     76.0
5  2.00     5  NA     NA  
6  2.00     6  76.0   NA  

关于使用 group_by 时重新排序 NA 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48544563/

相关文章:

r - 在管链中捕获对象的 "safe state"

python - 不能在 Pandas 中使用 dropna 删除 NAN

r - 是否可以根据条件从不同的数据框中估算多个值?

r - 在 R 中的大型数据帧上匹配多个条件

r - 当按多个列分组时,如何在 dplyr 中命名 group_split 的列表

r - 如何操作(聚合)R 中的数据?

r - 我们如何找到 rstanarm 中每次迭代的不同值?

r - 如何将 .Rdata 格式转换为文本文件格式

r - 在 R 中制作交互式图形

r - 通过匹配R中的字符串将行转换为列