如何删除包含NA的部分列

时间:2016-02-12 17:39:50

标签: r

我有一个看起来如下的数据集:

ID1      x1   x2
200      10   NA
200      12   NA
200      13   NA
200      NA   17
200      NA   16
200      NA   19

我想删除包含NA的列的部分,然后我会有这样的输出

ID1   x1   x2
200   10   17
200   12   16
200   13    19

我怎样才能在R?

中这样做

2 个答案:

答案 0 :(得分:3)

我们可以使用data.table执行此操作。但是,我们必须理解OP提供了一个最小的例子,NA元素在'x1'和'x2'列中都是相同的。如果不是,这将无效。

我们将'data.frame'转换为'data.table'(setDT(df1)),按'ID'分组,我们遍历其他列并使用na.omit删除NA元素。< / p>

library(data.table)
setDT(df)[, lapply(.SD, na.omit) , by = ID1]
#   ID1 x1 x2
#1: 200 10 17
#2: 200 12 16
#3: 200 13 19

答案 1 :(得分:1)

Base R:

# remove NAs and leave in list of vectors
xclean <- apply(x[2:3],MARGIN = 2,na.omit)

# chance to write code to handle different length vectors

# put in dataframe
data.frame(ID1 = 200,xclean)