当前位置:  开发笔记 > 编程语言 > 正文

将多个具有大量NA的列组合到R中的一个因子列中

如何解决《将多个具有大量NA的列组合到R中的一个因子列中》经验,为你挑选了1个好方法。

我有一个带有观察结果的.csv导入表.

ED1 ED2 ED3 ED4 ED5 
1   NA  NA  NA  NA 
NA  NA  1   NA  NA 
NA  1   NA  NA  NA 
NA  NA  NA  NA  1 

<-----等------>

因此每行只包含一个值"1",一行中的其他列包含NA.我需要将这五列合并为一个因子列.

喜欢:

EDU

2

3

3

1

2

1

或者这可能是因子列"ED1","ED2","ED3"等因素(作为源列的名称).



1> Rich Scriven..:

这里不需要使用apply()循环.你可以max.col()结合使用否定的电话is.na().

max.col(!is.na(df))
# [1] 1 3 2 5

这给了我们1s的列号.为了获得列名,我们可以names()在数据帧的向量子集中使用它.

names(df)[max.col(!is.na(df))]
# [1] "ED1" "ED3" "ED2" "ED5"

因此,我们可以通过因子列获得所需的数据框

data.frame(EDU = names(df)[max.col(!is.na(df))])
#   EDU
# 1 ED1
# 2 ED3
# 3 ED2
# 4 ED5

数据:

df <- structure(list(ED1 = c(1, NA, NA, NA), ED2 = c(NA, NA, 1, NA), 
    ED3 = c(NA, 1, NA, NA), ED4 = c(NA, NA, NA, NA), ED5 = c(NA, 
    NA, NA, 1)), .Names = c("ED1", "ED2", "ED3", "ED4", "ED5"
), row.names = c(NA, -4L), class = "data.frame")

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有