group = c(1,1,4,4,4,5,5,6,1,4,6,1,1,1,1,6,4,4,4,4,1,4,5,6)
animal = c('a','b','c','c','d','a','b','c','b','d','c','a','a','a','a','c','c','c','c','c','a','c','a','c')
sleep = c('y','n','y','y','y','n','n','y','n','y','n','y','y','n','m','y','n','n','n','n',NA, NA, NA, NA)

test = data.frame(group, animal, sleep)
print(test)

group_animal = test %>% group_by(`group`, `animal`) %>% count(sleep)
print(group_animal)

我想用基于组和动物的睡眠答案的最高计数来替换测试df的睡眠列中的NA值.

因此,第1组,睡眠列中有NAs的动物a的睡眠值应为"y",因为这是第1组动物a中计数最高的值.

第4组动物c与NAs的睡眠应具有"n"作为睡眠值.

推荐答案

另一种 Select 是用Mode替换NAs.您可以使用zoona.aggregate功能中的Mode function from this post来替换这些NAs,如下所示:

Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

group = c(1,1,4,4,4,5,5,6,1,4,6,1,1,1,1,6,4,4,4,4,1,4,5,6)
animal = c('a','b','c','c','d','a','b','c','b','d','c','a','a','a','a','c','c','c','c','c','a','c','a','c')
sleep = c('y','n','y','y','y','n','n','y','n','y','n','y','y','n','m','y','n','n','n','n',NA, NA, NA, NA)
test = data.frame(group, animal, sleep)

library(dplyr)
library(zoo)
test %>%
  group_by(group, animal) %>%
  mutate(sleep = na.aggregate(sleep , FUN=Mode)) %>%
  ungroup()
#> # A tibble: 24 × 3
#>    group animal sleep
#>    <dbl> <chr>  <chr>
#>  1     1 a      y    
#>  2     1 b      n    
#>  3     4 c      y    
#>  4     4 c      y    
#>  5     4 d      y    
#>  6     5 a      n    
#>  7     5 b      n    
#>  8     6 c      y    
#>  9     1 b      n    
#> 10     4 d      y    
#> # … with 14 more rows
#> # ℹ Use `print(n = ...)` to see more rows

reprex package(v2.0.1)于2022-07-26创建

以下是tail的输出:

> tail(test)
# A tibble: 6 × 3
  group animal sleep
  <dbl> <chr>  <chr>
1     4 c      n    
2     4 c      n    
3     1 a      y    
4     4 c      n    
5     5 a      n    
6     6 c      y 

R相关问答推荐

替换收件箱的子集(行和列)

R kableExtra在插入水平线时添加额外的空白行

仅返回R中所有其他列的列ID和年份缺失(NA)数据的列表

通过绘图 Select 线串几何体并为其着色

在R中列表的结尾添加数字载体

计算R中的威布尔分布的EDF

在(g)子中使用asserable字符

如何自定义Shapviz图?

如何按排序顺序打印一个框架中所有精确的唯一值?

如何利用模型函数在格图中添加双曲/指数曲线

我不能在docker中加载sf

使用sf或terra的LINESTRAING的累积长度

如何在ggplot图中找到第二轴的比例

R:从geom_ol()中删除轮廓并导出为pdf

在使用bslb和bootstrap5时,有没有办法更改特定dt行的 colored颜色 ?

Geom_arcbar()中出错:找不到函数";geom_arcbar";

将工作目录子文件夹中的文件批量重命名为顺序

循环遍历多个变量,并将每个变量插入函数R

向R中的数据帧添加一列,该列统计另一列中每个唯一值的二进制观测值的数量

如何在Quarto中使用美人鱼图表中的标记来加粗文本