我必须删除我的数据帧中有4000列和180行的列。我想设置的条件以删除数据帧中的列: (i)删除(ii)如果列中没有两个连续的(一个接一个) 值,则移除该列(如果该列中的值不足两个值/条目) 。 (iii)删除所有值为NA的列。 我已经提供了要删除列的条件。这里的目的不仅仅在于如何在“如何删除data.table中的列”中找到其名称的列。 我举例说明如下:基于R中的条件删除数据帧的列
A B C D E
0.018 NA NA NA NA
0.017 NA NA NA NA
0.019 NA NA NA NA
0.018 0.034 NA NA NA
0.018 NA NA NA NA
0.015 NA NA NA 0.037
0.016 NA NA NA 0.031
0.019 NA 0.4 NA 0.025
0.016 0.03 NA NA 0.035
0.018 NA NA NA 0.035
0.017 NA NA NA 0.043
0.023 NA NA NA 0.040
0.022 NA NA NA 0.042
期望中的数据框:
A E
0.018 NA
0.017 NA
0.019 NA
0.018 NA
0.018 NA
0.015 0.037
0.016 0.031
0.019 0.025
0.016 0.035
0.018 0.035
0.017 0.043
0.023 0.040
0.022 0.042
我怎样才能在一个代码incoporate这三个条件。我很感谢你在这方面的帮助。 重复的例子,
structure(list(Month = c("Jan-2000", "Feb-2000", "Mar-2000",
"Apr-2000", "May-2000", "Jun-2000"), A.G.L.SJ.INVS...LON..DEAD...13.08.15 = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ABACUS.GROUP.DEAD...18.02.09 = c(0.00829384766220866,
0.00332213653674028, 0, 0, NA, NA), ABB.R..IRS. = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), .Names = c("Month",
"A.G.L.SJ.INVS...LON..DEAD...13.08.15", "ABACUS.GROUP.DEAD...18.02.09",
"ABB.R..IRS."), class = c("data.table", "data.frame"), row.names = c(NA,
-6L), .internal.selfref = <pointer: 0x0000000001c90788>)
对于(I)以除去柱:'DF [,sapply(DF,函数(x)的sum(!is.na(x))> 1)]' – jogo
@Frank这里删除列是根据条件而不是名称。 – Aquarius
@Aquarius在链接q中,这些也是条件。它们只是基于名称而非价值向量的条件。我不认为它本质上不同。我也认为目标链接是有帮助的,因为它显示':= NULL',这是如何通过引用删除列(而不是创建一个全新的表)。 – Frank