首页 > 解决方案 > 创建一个变量来计算每个观察中出现的变量中零值的数量-R

问题描述

我正在尝试找出一种在 R 中执行此操作的方法,但我一生都无法弄清楚。假设我有一个包含以下内容的 df 。

v1<- c(0, 0, 2, 0 1 3)
v2<- c(1, 0, 8, 1 ,0)
v3<- c(0, 1, 3, 0, 0)
v4<- c(0, 0, 0, 0, 0)
df<- data.frame(v1, v2,v3, v4)

我想创建一个新变量,比如 num_zeros,它计算 v1 到 v3 中每个观察值的 0 数。有没有快速的方法来做到这一点?任何帮助将不胜感激!

标签: r

解决方案


我们可以使用rowSums逻辑matrix来获取 0 个值的计数并将其分配给“num_zeros”列

df$num_zeros <- rowSums(df[c('v1', 'v2', 'v3')] == 0)

或者另一种选择是

df$num_zeros <- (df$v1 == 0) + (df$v2 == 0) + (df$v3 == 0)

注意:这两种方法都是有效的并且是矢量化的


推荐阅读