按R中的列获取具有NA的ID列表

cnwbcb6i  于 2023-03-15  发布在  其他
关注(0)|答案(3)|浏览(131)

我正在尝试获取每列都有NA的ID列表。例如,如果我有:

ID  col1  col2
1    2     NA
2    NA    2
3    8     19
4    0     NA
5    NA    4

我如何获得:

col1   col2
2      1
5      4
sczxawaw

sczxawaw1#

我会这样做:

apply(dat[, -1], 2, \(col) dat$ID[is.na(col)], simplify=F)

# $col1
# [1] 2 5
# 
# $col2
# [1] 1 4

我使用了simplify=F,这样结果总是一个列表(如果列中的ID数相等,则不会简化为矩阵)。

cbwuti44

cbwuti442#

我们可以用

library(dplyr)# version >= 1.1.0
df1 %>%
  reframe(across(-ID, ~ ID[is.na(.x)]))
   col1 col2
1    2    1
2    5    4
sxissh06

sxissh063#

**更新:**感谢@onyambu(见评论):

as.data.frame(lapply(df[-1], function(x) df$ID[is.na(x)]))

**第一个答案:**使用lapply

as.data.frame(lapply(df[-1], function(x) which(is.na(x))))

  col1 col2
1    2    1
2    5    4

相关问题