考虑 R 中的一个数据框,我想在其中删除第 6 行,因为它缺少对变量 var1:var3
的观察。但是数据框对 id
和 year
有有效的观察结果。请参阅下面的代码。
在python中,这可以通过两种方式完成:
- 使用
df.dropna(subset = ['var1', 'var2', 'var3'], inplace=True)
- 使用
df.set_index(['id', 'year']).dropna()
如何使用 tidyverse 在 R 中做到这一点?
library(tidyverse)
df <- tibble(id = c(seq(1,10)), year=c(seq(2001,2010)),
var1 = c(sample(1:100, 10, replace=TRUE)),
var2 = c(sample(1:100, 10, replace=TRUE)),
var3 = c(sample(1:100, 10, replace=TRUE)))
df[3,4] = NA
df[6,3:5] = NA
df[8,3:4] = NA
df[10,4:5] = NA
最佳答案
我们可能会使用 complete.cases
library(dplyr)
df %>%
filter(if_any(var1:var3, complete.cases))
-输出
# A tibble: 9 x 5
id year var1 var2 var3
<int> <int> <int> <int> <int>
1 1 2001 48 55 82
2 2 2002 22 83 67
3 3 2003 89 NA 19
4 4 2004 56 1 38
5 5 2005 17 58 35
6 7 2007 4 30 94
7 8 2008 NA NA 36
8 9 2009 97 100 80
9 10 2010 37 NA NA
关于r - 如何删除列 : the R equivalent of dropna(subset) from python pandas 子集的缺失观测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68094389/