添加一列,指示同一 ID 的当前非缺失行数

问题描述 投票:0回答:1

我有一个关于计算列中非缺失条目的快速问题。假设我的数据如下:

data<-data.frame(id=c(1,1,1,1,2,2,2,3,3,3,3),var1=c(NA,2,5,3,NA,NA,6,4,4,NA,7))

如何添加一个新列来计算每个 ID 的当前数量非缺失 var1(如下)?

data<-data.frame(id=c(1,1,1,1,2,2,2,3,3,3,3),var1=c(NA,2,5,3,NA,NA,6,4,4,NA,7),count_nm=c(NA,1,2,3,NA,NA,1,1,2,NA,3))

我能做的最好的事情就是删除 var1==NA 的行,并添加每个 ID 的计数。但我想知道如何在不删除这些行的情况下做到这一点。谢谢!

r count frequency
1个回答
2
投票

您可以在

cumsum
上使用
complete.cases
:

library(dplyr)
data |> 
  mutate(count_nm = cumsum(complete.cases(var1)), .by = id)

我也喜欢方便的

collapse::fcumsum
函数,它有一个
na.rm
参数。

library(dplyr)
data |> 
 mutate(count_nm = collapse::fcumsum(var1, na.rm = TRUE), .by = id)
© www.soinside.com 2019 - 2024. All rights reserved.