我正在尝试获取每列都有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
sczxawaw1#
我会这样做:
apply(dat[, -1], 2, \(col) dat$ID[is.na(col)], simplify=F) # $col1 # [1] 2 5 # # $col2 # [1] 1 4
我使用了simplify=F,这样结果总是一个列表(如果列中的ID数相等,则不会简化为矩阵)。
simplify=F
cbwuti442#
我们可以用
library(dplyr)# version >= 1.1.0 df1 %>% reframe(across(-ID, ~ ID[is.na(.x)])) col1 col2 1 2 1 2 5 4
sxissh063#
**更新:**感谢@onyambu(见评论):
as.data.frame(lapply(df[-1], function(x) df$ID[is.na(x)]))
**第一个答案:**使用lapply
lapply
as.data.frame(lapply(df[-1], function(x) which(is.na(x)))) col1 col2 1 2 1 2 5 4
3条答案
按热度按时间sczxawaw1#
我会这样做:
我使用了
simplify=F
,这样结果总是一个列表(如果列中的ID数相等,则不会简化为矩阵)。cbwuti442#
我们可以用
sxissh063#
**更新:**感谢@onyambu(见评论):
**第一个答案:**使用
lapply