与R中
问题描述:
值的具体数目数据帧查找列我有一个数据帧(data.table)超过3000列。我需要找出我的数据框中只有2个和少于2个值的列。然后,我提取了2个以下的列后,我想把它们从原始数据框中删除。 我说明如下: 原始数据帧与R中
Month A B C
Jan-00 0.007 NA 1758.27
Feb-00 0.004 NA 1310.43
Mar-00 0.004 NA 1260.89
Apr-00 0.004 0.0002 1137.34
May-00 0.005 6.05E-05 1595.78
Jun-00 0.003 NA 4968.89
Jul-00 0.007 NA NA
Aug-00 0.005 NA NA
Sep-00 0.004 NA NA
所需的输出
Month A C
Jan-00 0.007 1758.27
Feb-00 0.004 1310.435
Mar-00 0.004 1260.89
Apr-00 0.004 1137.342105
May-00 0.005 1595.78125
Jun-00 0.003 4968.895238
Jul-00 0.007 NA
Aug-00 0.005 NA
Sep-00 0.004 NA
我很感激你在这方面的帮助。
答
我们可以使用Filter
Filter(function(x) sum(!is.na(x))>2, df1)
# Month A C
#1 Jan-00 0.007 1758.27
#2 Feb-00 0.004 1310.43
#3 Mar-00 0.004 1260.89
#4 Apr-00 0.004 1137.34
#5 May-00 0.005 1595.78
#6 Jun-00 0.003 4968.89
#7 Jul-00 0.007 NA
#8 Aug-00 0.005 NA
#9 Sep-00 0.004 NA
或者
df1[colSums(!is.na(df1))>2]
如果数据集data.table
,
library(data.table)
setDT(df1)[,unlist(df1[, lapply(.SD, function(x)
sum(!is.na(x))>2)]), with=FALSE]
或者
setDT(df1)[, Filter(function(x) sum(!is.na(x))>2, .SD)]
你做你自己的任何企图提出一个非常类似的问题最近https://*.com/questions/34902809后?你在这个过程中的某个地方卡住了吗? –
使用'dput'提供示例数据也很有帮助。 – mrub
@docendodiscimus感谢您提供宝贵的信息。但是,这个问题是基于多种条件,而我不是。我对这个软件很陌生。 – Aquarius