【发布时间】:2018-03-15 06:45:30
【问题描述】:
我之所以问这个问题是因为我在一个实验室工作,我的同事在其中对 Microsoft-Excel 电子表格进行一些分析。我有时会在电子表格列的底部找到一个 Microsoft Excel 分析表。为了我的目的,我可以毫不费力地将这些电子表格读入 R。模式是电子表格中总会有至少一整行空单元格或 NA,因此任何跟随并包括整行 NA 的内容都不应解释为 R,因为它不是原始数据。
想象一个像这样的简单数字数据框 (df)。
我添加了一个“#”来显示我想要排除的行。
x y z comments
1 8 5 4 <NA>
2 3 6 5 <NA>
3 7 7 3 <NA>
4 9 3 10 Well
5 4 NA 6 <NA>
6 5 9 8 <NA>
7 1 4 7 Yeah
8 10 2 2 <NA>
9 2 10 9 <NA>
10 6 1 1 I guess
11 NA NA NA <NA> # whole row of NAs/empty cells. # exclude
12 8 3 4 Summary # exclude
13 1 1 2 <NA> # exclude
14 NA NA NA <NA> # exclude
如果我只是排除所有包含 NA 的行,我会丢失很多信息:
print(na.omit(df))
x y z comments
4 9 3 10 Well
7 1 4 7 Yeah
10 6 1 1 I guess
我不想因为 cmets 可能不完整而忽略它们。
但是看到整行 NA,在本例中出现在第 11 行信号中以排除以下行,因此我想要包含的电子表格包含这么多:
x y z comments
1 8 5 4 <NA>
2 3 6 5 <NA>
3 7 7 3 <NA>
4 9 3 10 Well
5 4 NA 6 <NA>
6 5 9 8 <NA>
7 1 4 7 Yeah
8 10 2 2 <NA>
9 2 10 9 <NA>
10 6 1 1 I guess
这里只是模拟数据,但我必须经常这样做,所以这是我向您展示的模拟数据:
structure(list(x = c(8, 3, 7, 9, 4, 5, 1, 10, 2, 6, NA, 8, 1,
NA), y = c(5, 6, 7, 3, NA, 9, 4, 2, 10, 1, NA, 3, 1, NA), z = c(4,
5, 3, 10, 6, 8, 7, 2, 9, 1, NA, 4, 2, NA), comments = c(NA, NA,
NA, "Well", NA, NA, "Yeah", NA, NA, "I guess ", NA, "Summary",
NA, NA)), .Names = c("x", "y", "z", "comments"), row.names = c(NA,
14L), class = "data.frame")
如何在任何类型的数据框中排除所有行,包括并跟随一整行 NA(空单元格)?
谢谢。
【问题讨论】:
标签: r