为每个包含缺失值的组添加行

roc*_*y23 5 r dataframe data.table

每个篮子可容纳的水果总数为 10。对于每个篮子,如果计数为 10 并且缺少一个水果,我想为该篮子添加一行,该行表示该水果的计数为 0。这是生成数据帧的代码。

Basket <- c("A","A","B","B","C","C","C")
Fruit <- c("Apple","Orange","Apple","Orange","Orange","Apple", "Guava")
count <- c("5","5","7","3","2","6","4")
data <- data.frame(Basket,Fruit,count)

  Basket  Fruit count
1      A  Apple     5
2      A Orange     5
3      B  Apple     7
4      B  Guava     3
5      C Orange     2
6      C  Apple     6
7      C  Guava     4
Run Code Online (Sandbox Code Playgroud)

我基本上希望它看起来像这样:

Basket  Fruit count
1      A  Apple     5
2      A Orange     5
4      A  Guava     0
5      B  Apple     7
6      B Orange     0
7      B  Guava     3
8      C Orange     2
9      C  Apple     6
10     C  Guava     4
Run Code Online (Sandbox Code Playgroud)

不确定循环是否是一种有效的方法,但欢迎建议。目标是获得每种水果的跨组准确平均值。

Art*_*lov 5

将 data.frame 转换为宽格式,用 0 而不是 NA 填充它,然后将其转换回高格式:

count <- c(5,5,7,3,2,6,4)       # should be integers, not strings
data <- data.frame(Basket,Fruit,count)

d1 <- tidyr::spread( data, Fruit, count, fill = 0 )
d2 <- tidyr::gather( d1, Fruit, count, -Basket )
Run Code Online (Sandbox Code Playgroud)