合并行并删除NA [英] Combine rows and remove NA's
本文介绍了合并行并删除NA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个像这样的数据框:
I have a data frame like this:
idx type val1 val2 val3 val4 val5 val6
1 a 0.2 NA NA NA NA NA
2 a 0.3 NA NA NA NA NA
3 a 0.2 NA NA NA NA NA
4 a NA 0.3 NA NA NA NA
5 a NA 0.5 NA NA NA NA
6 a NA 0.2 NA NA NA NA
7 a NA NA 0.2 NA NA NA
8 a NA NA 0.5 NA NA NA
9 a NA NA 0.4 NA NA NA
10 a NA NA NA 0.4 NA NA
11 a NA NA NA 0.6 NA NA
12 a NA NA NA 0.6 NA NA
.
.
.
34 b NA NA NA NA NA 0.6
35 b NA NA NA NA NA 0.4
36 b NA NA NA NA NA 0.3
我想合并行并删除NA.所以这就是我要实现的:
I want to combine the rows and remove the NA's. So this is what I want to achieve:
idx type val1 val2 val3 val4 val5 val6
1 a 0.2 0.3 0.2 0.4 0.3 0.2
2 a 0.3 0.5 0.5 0.6 0.4 0.5
3 a 0.2 0.2 0.4 0.6 0.5 0.6
4 b 0.4 0.2 0.2 0.5 0.4 0.6
5 b 0.3 0.5 0.6 0.3 0.6 0.4
6 b 0.3 0.4 0.3 0.6 0.5 0.3
推荐答案
您可能只想对每个感兴趣的列应用一个函数,然后将其绑定到已过滤的类别列:
You might just want to apply a function to each of the columns of interest and then cbind it to the category column filtered:
test.df = data.frame(cat = rep(c('a','b'), each=3),x1=c(1,NA,NA,5.5,NA,NA),
x2=c(NA,2,NA,NA,4.5,NA),
x3=c(NA,NA,3.,NA,NA,3.5))
collapse_column <- function(data, col){
data[!is.na(data[,col]),col]
}
main_vals = sapply(2:4,collapse_column, data=test.df)
cat_vals = test.df[!is.na(test.df[,2]),'cat']
new_df = as.data.frame(cbind(cat_vals, main_vals))
names(new_df) = names(test.df)
这篇关于合并行并删除NA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文