【问题标题】:R control over number of consecutive NA values per row of data frameR控制每行数据帧的连续NA值的数量
【发布时间】:2020-07-16 19:41:10
【问题描述】:

有类似措辞的问题,但不是我想要做的。

我有一个数据框,我想在其中删除具有 n 个连续 NA 值的行。

1   Manhattan   NA      2300    NA      2275    2300    
2   Manhattan   2999    2975    NA      NA      2995    
3   Manhattan   NA      NA      NA      NA      4400    
4   Manhattan   6725    6500    6750    6995    6800    
5   Brooklyn    2000    1995    1975    2000    1999    
6   Bronx       1200    3200    NA      NA      NA

我有一些工作代码可以删除 n 个总 NA 值,但想连续调整它。

delete.na <- function(df, n=0) {
  df[rowSums(is.na(df)) <= n,]
}
df <- delete.na(df,3)

因此,在这种情况下,在删除具有 3 个连续 NA 值的行后,我将拥有:

1   Manhattan   NA      2300    NA      2275    2300    
2   Manhattan   2999    2975    NA      NA      2995    
4   Manhattan   6725    6500    6750    6995    6800    
5   Brooklyn    2000    1995    1975    2000    1999    

【问题讨论】:

    标签: r dataframe filter na missing-data


    【解决方案1】:

    一种选择是遍历行,检查rle 以返回相同的相邻元素的值和长度列表(这里是逻辑向量(is.na - 即 TRUE - 用于 NA 和 FALSE对于非 NA),因为“值”是合乎逻辑的,所以使用它来子集“长度”,检查它是否是 all 小于 3 并将其用作子集行的行索引

    df[apply(df, 1, function(x) all(with(rle(is.na(x)), lengths[values]) <3)),]
    #     city col1 col2 col3 col4 col5
    #1 Manhattan   NA 2300   NA 2275 2300
    #2 Manhattan 2999 2975   NA   NA 2995
    #4 Manhattan 6725 6500 6750 6995 6800
    #5  Brooklyn 2000 1995 1975 2000 1999
    

    数据

    df <- structure(list(city = c("Manhattan", "Manhattan", "Manhattan", 
    "Manhattan", "Brooklyn", "Bronx"), col1 = c(NA, 2999L, NA, 6725L, 
    2000L, 1200L), col2 = c(2300L, 2975L, NA, 6500L, 1995L, 3200L
    ), col3 = c(NA, NA, NA, 6750L, 1975L, NA), col4 = c(2275L, NA, 
    NA, 6995L, 2000L, NA), col5 = c(2300L, 2995L, 4400L, 6800L, 1999L, 
    NA)), class = "data.frame", row.names = c("1", "2", "3", "4", 
    "5", "6"))
    

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      相关资源
      最近更新 更多