我有一个看起来如下的数据集:
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?
中这样做答案 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)