gpt4 book ai didi

r - 计算出现在非缺失值之间的 NA

转载 作者:行者123 更新时间:2023-12-01 23:20:23 25 4
gpt4 key购买 nike

我有一个包含 5 个时间列(第一年、第二年等)的数据框,对于某些行,我在非缺失值之间有 NA。示例如下:

df = structure(list(FirstYStage = c(NA, 3.2, 3.1, NA, NA, 2, 1, 3.2, 
3.1, 1, 2, 5, 2, NA, NA, NA, NA, 2, 3.1, 1), SecondYStage = c(NA,
3.1, 3.1, NA, NA, 2, 1, 4, 3.1, 1, NA, 5, 3.1, 3.2, 2, 3.1, NA,
2, 3.1, 1), ThirdYStage = c(NA, NA, 3.1, NA, NA, 3.2, 1, 4, NA,
1, NA, NA, 3.2, NA, 2, 3.2, NA, NA, 2, 1), FourthYStage = c(NA,
NA, 3.1, NA, NA, NA, 1, 4, NA, 1, NA, NA, NA, 4, 2, NA, NA, NA,
2, 1), FifthYStage = c(NA, NA, 2, NA, NA, NA, 1, 5, NA, NA, NA,
NA, 3.2, NA, 2, 3.2, NA, NA, 2, 1)), class = c("tbl_df", "tbl",
"data.frame"), row.names = c(NA, -20L))

我想使用 dplyr 计算在非缺失值之间具有缺失值的行数。第 13、14 和 16 行就是这样的示例。

我怎样才能做到这一点?我觉得这与粘贴整行并查看 NA 的左侧和右侧有关...但不清楚如何进行此操作。

最佳答案

sum(grepl("[[:digit:]]+[NA]+[[:digit:]]", apply(df, 1, paste, collapse = "")))

[1] 3

简而言之:

  1. 连接行

  2. 检查哪些行返回 TRUE 以匹配字符串:“number-NA-number”(在本例中,行 131416)

  3. 对评估为TRUE

    的行求和

基于@Sotos 评论,这更好,因为它阻止我们使用 applymargin = 1:

sum(grepl("[[:digit:]]+[NA]+[[:digit:]]", do.call(paste0, df)))

关于r - 计算出现在非缺失值之间的 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com