【发布时间】:2021-10-31 03:20:45
【问题描述】:
我正在尝试分析每行代表一个时间序列的数据框。我的 df 结构如下:
df <- data.frame(key = c("10A", "11xy", "445pe"),
Obs1 = c(0, 22, 0),
Obs2 = c(10, 0, 0),
Obs3 = c(0, 3, 5),
Obs4 = c(0, 10, 0)
)
我现在想创建一个新的数据框,其中每一行再次代表键,列包含以下结果:
- “TotalZeros”:计算每行的零总数 (=key)
- “LeadingZeros”:计算每行第一个非零 obs 之前的零数
这意味着我希望最终收到以下数据帧:
key TotalZeros LeadingZeros
10A 3 1
11xy 1 0
445pe 3 2
我设法计算了每一行的零总数:
zeroCountDf <- data.frame(key = df$key, TotalNonZeros = rowSums(df ! = 0))
但我正在努力计算LeadingZeros。我找到了如何计算向量中的第一个非零位置,但我不明白如何将这种方法应用于我的数据框:
vec <- c(0,1,1)
min(which(vec != 0)) # returns 2, meaning the second position is first nonzero value
谁能解释如何计算数据框中每一行的前导零?我是 R 新手,感谢任何见解和提示。提前致谢。
【问题讨论】: