如何识别数据帧中哪些列不是每行的“NA”?

人气:188 发布:2022-10-16 标签: r dataframe na

问题描述

这是与How to identify which columns are not "NA" per row in a matrix?相同的问题,但针对的是数据帧而不是矩阵。

我有一个205行62列的数据帧。我想为值不是NA的每一行标识列名。例如:

        col1 col2 col3 col4 col5 col6
row1    NA   NA   NA   NA   fact fact
row2    num  num  NA   NA   NA   NA
row3    num  num  NA   NA   int  int    
row4    NA   NA   NA   NA   fact fact
row5    NA   NA   int  int  NA   NA
row6    NA   NA   int  NA   NA   NA

结果应为:

row1    col5;col6
row2    col1;col2
row3    col1;col2;col5;col6
row4    col5;col6
row5    col3;col4
row6    col3

理想情况下,应将结果作为附加列添加到数据框中。

推荐答案

循环各行,使用获取非NA列的列名,然后粘贴:

d$myCol <- apply(d, 1, function(i) paste(colnames(d)[ !is.na(i) ], collapse = ","))

829