R 如何选择具有某列完整事例的数据?

R 如何选择具有某列完整事例的数据?,r,R,我正在尝试获取一个数据帧(just.samples.with.sweal.values),它只包含具有非NA值的样本。我曾尝试使用complete.cases函数来实现这一点,但我认为我在下面的语法上做了一些错误的事情: data <- structure(list(Sample = 1:14, Head = c(1L, 0L, NA, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L), Shoulders = c(13L, 14L, NA, 18

我正在尝试获取一个数据帧(
just.samples.with.sweal.values
),它只包含具有非
NA
值的样本。我曾尝试使用
complete.cases
函数来实现这一点,但我认为我在下面的语法上做了一些错误的事情:

data <- structure(list(Sample = 1:14, Head = c(1L, 0L, NA, 1L, 1L, 1L, 
0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L), Shoulders = c(13L, 14L, NA, 
18L, 10L, 24L, 53L, NA, 86L, 9L, 65L, 87L, 54L, 36L), Knees = c(1L, 
1L, NA, 1L, 1L, 2L, 3L, 2L, 1L, NA, 2L, 3L, 4L, 3L), Toes = c(324L, 
5L, NA, NA, 5L, 67L, 785L, 42562L, 554L, 456L, 7L, NA, 54L, NA
)), .Names = c("Sample", "Head", "Shoulders", "Knees", "Toes"
), class = "data.frame", row.names = c(NA, -14L))

just.samples.with.shoulder.values <- data[complete.cases(data[,"Shoulders"])]
print(just.samples.with.shoulder.values)

数据您可以尝试使用
is.na

data[!is.na(data["Shoulders"]),]
   Sample Head Shoulders Knees Toes
1       1    1        13     1  324
2       2    0        14     1    5
4       4    1        18     1   NA
5       5    1        10     1    5
6       6    1        24     2   67
7       7    0        53     3  785
9       9    1        86     1  554
10     10    1         9    NA  456
11     11    1        65     2    7
12     12    1        87     3   NA
13     13    0        54     4   54
14     14    1        36     3   NA

您也可以尝试
complete.cases
,它将返回一个逻辑向量,允许通过
shoels

data[complete.cases(data$Shoulders), ] 
#    Sample Head Shoulders Knees Toes
#  1      1    1        13     1  324
#  2      2    0        14     1    5
#  4      4    1        18     1   NA
#  5      5    1        10     1    5
#  6      6    1        24     2   67
#  7      7    0        53     3  785
#  9      9    1        86     1  554
# 10     10    1         9    NA  456
# 11     11    1        65     2    7
# 12     12    1        87     3   NA
# 13     13    0        54     4   54
# 14     14    1        36     3   NA

使用is.na和complete.cases之间存在细微差别。 is.na将删除实际na值,而此处的目标是仅控制变量,而不处理缺失值/na的那些可能是合法数据点的值,如果使用“[”如果只有一个参数且没有逗号,它将选择列,而不是您想要的行。只需在括号和行末尾的左方括号之间添加一个逗号,]