删除除第一列之外所有单元格均为空的行

问题描述 投票:0回答:1

我有这个数据框(

df
):

df <- structure(list(id = c("A", "B", "C", "D", "E", "F", "G", "H", 
"I", "J", "K", "L"), name = c("Sam", "Dave", NA, "Alan", "Ted", 
"Ana", NA, NA, "Max", NA, "Walt", NA), age = c(28, 32, NA, NA, 
23, NA, 21, NA, NA, 22, 21, NA), height = c(NA, 161, NA, 168, 
167, NA, 166, NA, 158, 171, NA, NA)), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -12L))

我想删除除

id
列之外所有单元格为空的行。数据中可以有任意数量的列。这个
df
只有3列(
id
除外)。这是最终的数据框
final
:

final <- structure(list(id = c("A", "B", "D", "E", "F", "G", "I", "J", 
"K"), name = c("Sam", "Dave", "Alan", "Ted", "Ana", NA, "Max", 
NA, "Walt"), age = c(28, 32, NA, 23, NA, 21, NA, 22, 21), height = c(NA, 
161, 168, 167, NA, 166, 158, 171, NA)), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -9L))

是否可以使用

base R
tidyverse
套餐?

r dataframe tidyverse
1个回答
0
投票

在基础R中,您可以使用

apply

 df[!apply(df[-1], 1, \(x) all(is.na(x))),]
# A tibble: 9 x 4
  id    name    age height
  <chr> <chr> <dbl>  <dbl>
1 A     Sam      28     NA
2 B     Dave     32    161
3 D     Alan     NA    168
4 E     Ted      23    167
5 F     Ana      NA     NA
6 G     NA       21    166
7 I     Max      NA    158
8 J     NA       22    171
9 K     Walt     21     NA
© www.soinside.com 2019 - 2024. All rights reserved.