我有一个名为source的数据框,看起来像这样
185 2002-07-04 NA NA 20
186 2002-07-05 NA NA 20
187 2002-07-06 NA NA 20
188 2002-07-07 14.400 0.243 20
189 2002-07-08 NA NA 20
190 2002-07-09 NA NA 20
191 2002-07-10 NA NA 20
192 2002-07-11 NA NA 20
193 2002-07-12 NA NA 20
194 2002-07-13 4.550 0.296 20
195 2002-07-14 NA NA 20
196 2002-07-15 NA NA 20
197 2002-07-16 NA NA 20
198 2002-07-17 NA NA 20
199 2002-07-18 NA NA 20
200 2002-07-19 NA 0.237 20
当我尝试
时> nrow(complete.cases(source))
我只得到NULL
有人可以解释为什么会出现这种情况,如何计算没有NA或NaN值的行数?
答案 0 :(得分:3)
而是使用$mainArray = array(
'compression' => array('7z', 'cbr', 'deb', 'gz', 'pkg', 'rar', 'rpm', 'sitx', 'tar.gz', 'zip', 'zipx'),
'scripts' => array('php', 'js', 'css', 'asp', 'aspx', 'htm', 'html', 'cc', 'cpp', 'py', 'jsp'),
'documentType' => array('txt', 'doc', 'docx', 'log', 'rtf'),
);
foreach($mainArray as $key=>$value){
if (in_array(strtolower('php'), $value)){ // Return only if found during the loop
return $key;
}
}
。虽然最安全的选项是sum
(因为它可以同时处理data.frams和vector)
NROW
或者,如果您坚持使用sum(complete.cases(source))
#[1] 2
nrow
说明:nrow(source[complete.cases(source), ])
#[1] 2
返回一个逻辑向量,指示哪些情况(在您的情况下是行)是完整的。
complete.cases
答案 1 :(得分:0)
complete.cases
返回一个逻辑向量,指示完成的行。由于向量没有行属性,因此您无法在此处使用nrow
,但正如其他人sum
所建议的那样。使用sum
,TRUE
和FALSE
会在内部转换为1
和0
,因此使用sum
会计算TRUE
的值sum(complete.cases(source))
# [1] 2
你的矢量。
data.frame
如果您对排除所有非完整行后遗留的na.exclude
更感兴趣,可以使用data.frame
。这会返回nrow
,您可以使用nrow(na.exclude(source))
# [1] 2
na.exclude(source)
# V2 V3 V4 V5
# 188 2002-07-07 14.40 0.243 20
# 194 2002-07-13 4.55 0.296 20
。
{{1}}
答案 2 :(得分:0)
你甚至可以尝试:
source[rowSums(is.na(source))==0,]
# V1 V2 V3 V4 V5
# 4 188 2002-07-07 14.40 0.243 20
# 10 194 2002-07-13 4.55 0.296 20
nrow(source[rowSums(is.na(source))==0,])
#[1] 2