问题描述
这是与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 = ","))