当前位置: 首页 > 知识库问答 >
问题:

如何删除嵌套数据帧中具有NA的行?

谯嘉胜
2023-03-14

可能的重复项:

删除数据中具有NAs(缺少值)的行。框架

如何删除具有NA值的“行”?

我有一个嵌套的数据框,大约有400个文件,大约65k行。我想从嵌套数据框df中删除所有带有NA的行。我尝试了na。省略(df),但似乎不起作用。我不确定我是否遗漏了什么。谢谢

 df

[[1]]
    V1              V2           V3
1   ID SignalIntensity          SNR
2  109    6.1823089314 0.8453576915
3  110   10.1727771385 4.3837077591
4  111    7.2922746927           NA
5  112    8.8984671629 2.3192184908
6  113              NA 3.7133402249
7  114    7.9850187685 1.5008899345
8  116    7.7893230124           NA
9  117    7.1948346495  1.134973824
10 118    6.5727729751 0.9041846475
11 119              NA 0.7098581049
12 120    9.3711264685 2.9968456969
13 121    6.1549436434 0.7777584058


[[2]]
    V1              V2           V3
1   ID SignalIntensity          SNR
2  118    6.5727729751 0.9041846475
3  119    5.3775194293           NA
4  120    9.3711264685 2.9968456969
5  121    6.1549436434 0.7777584058
6  123    5.7974462402 0.7235424803
7  124              NA 0.7019574482
8  125    7.0145371807  0.343334334
9  126    6.0891591319  0.797164982
10 127    6.3148197657 0.7845943688

[[3]]
    V1              V2           V3
1   ID SignalIntensity          SNR
2  109    6.1823089314 0.8453576915
3  110   10.1727771385 4.3837077591
4  111    7.2922746927 1.0725751161
5  112    8.8984671629           NA
6  113    9.5910338232 3.7133402249
7  114    7.9850187685 1.5008899345
8  116    7.7893230124 1.3636655582
9  117    7.1948346495           NA
10 118    6.5727729751 0.9041846475
11 119    5.3775194293 0.7098581049
12 120    9.3711264685 2.9968456969

我的最终数据应该是这样的。

 df
[[1]]
    V1              V2           V3
1   ID SignalIntensity          SNR
2  109    6.1823089314 0.8453576915
3  110   10.1727771385 4.3837077591
5  112    8.8984671629 2.3192184908
6  113    9.5910338232 3.7133402249
7  114    7.9850187685 1.5008899345
9  117    7.1948346495  1.134973824
10 118    6.5727729751 0.9041846475
12 120    9.3711264685 2.9968456969
13 121    6.1549436434 0.7777584058


[[2]]
    V1              V2           V3
1   ID SignalIntensity          SNR
2  118    6.5727729751 0.9041846475
4  120    9.3711264685 2.9968456969
5  121    6.1549436434 0.7777584058
6  123    5.7974462402 0.7235424803
8  125    7.0145371807  0.343334334
9  126    6.0891591319  0.797164982
10 127    6.3148197657 0.7845943688

[[3]]
    V1              V2           V3
1   ID SignalIntensity          SNR
2  109    6.1823089314 0.8453576915
3  110   10.1727771385 4.3837077591
4  111    7.2922746927 1.0725751161
6  113    9.5910338232 3.7133402249
7  114    7.9850187685 1.5008899345
8  116    7.7893230124 1.3636655582
9  117    7.1948346495  1.134973824
10 118    6.5727729751 0.9041846475
11 119    5.3775194293 0.7098581049
12 120    9.3711264685 2.9968456969

共有2个答案

羊舌航
2023-03-14

purrr库也可以与na一起使用。省略

map(df, na.omit)

另一种选择是在map中创建匿名函数

map(df, ~(.x %>% filter(complete.cases(.))))

如果您希望保存NA记录以备日后调查,那么最后一次迭代可能会很有用(这是一个很好的实践)。只需添加not 具有NA的任何行的限定符,如下所示:

map(df, ~(.x %>% filter(!complete.cases(.))))

最后,如果你最关心的是做计算,你可以考虑用NAs替换所有的

map(df, ~replace(., is.na(.), 0) )

纪勇军
2023-03-14

df是一个“数据”列表。框架'。因此,您可以使用lappy

lapply(df, na.omit)

观察到的另一件事是数据框列表中的第一行是“字符”。我假设您使用了read.table头=FALSE,而头实际上在那里。可能是,你需要再次读取文件使用

files <- list.files #if all the files are in the working directory
lst <- lapply(files, read.table, header=TRUE, stringsAsFactors=FALSE)
lapply(lst, na.omit)
 类似资料:
  • 我有一个熊猫数据框,看起来像这样: 预期结果应该是: 如何有效地从列和整个数据帧中删除具有的所有字符串? 我尝试使用以下正则表达式: 然而,我不知道是否有更简单或更健壮的方法从我的数据框中删除所有这些子串。如何删除开头有的所有字符串? 更新 我试过: 它是有效的,但是我想知道是否有更有效的方法。可能是一个正则表达式。

  • 我需要展平一个数据帧,以便将其与Spark(Scala)中的另一个数据帧连接起来。 基本上,我的2个数据帧有以下模式: 数据流1 DF2 老实说,我不知道如何使DF2变平。最后,我需要连接DF.field4 = DF2.field9上的2个数据帧 我用的是2.1.0 我的第一个想法是使用爆炸,但在Spark 2.1.0中已经被否决了,有人能给我一点提示吗?

  • 我不熟悉promise和使用NodeJS中的请求和promise编写网络代码。 我想删除这些嵌套的promise,并将它们链接起来,但我不确定该如何做/这是否是正确的方式。 这是请求代码: 如有任何见解,将不胜感激。

  • 问题内容: 我有一个巨大的数据框,里面有值和空白/ NA。我想从数据框中删除空格,并在列中向上移动下一个值。考虑下面的示例数据框。 我希望我的输出如下 我希望删除NaN,然后​​将下一个值上移。没有帮助。我尝试了多个循环和if语句,并获得了预期的结果,但是还有什么更好的方法可以完成它。 问题答案: 你可以用与: 然后,如果需要替换为空白空间,则创建混合值(带数字的字符串)的某些函数可能会被破坏:

  • 我有一个包含大量列的Spark数据框架。我想从中删除两列以获得新的数据帧。 如果列更少,我可以在API中使用select方法,如下所示: 但是既然从长列表中挑选列是一项乏味的任务,有解决方法吗?

  • 我有一个熊猫数据框,看起来像这样。 我想确定猫和蝙蝠是重复的相同值,因此想删除一条记录,只保留第一条记录。所得到的数据帧应该只具有。