R 如果所有列都包含NA';但保留至少包含一个结果的行
我有一些数据,我正试图从中删除NA值 我适用以下规定:R 如果所有列都包含NA';但保留至少包含一个结果的行,r,dplyr,R,Dplyr,我有一些数据,我正试图从中删除NA值 我适用以下规定: data %>% head(20) %>% drop_na(contains("gvkey")) 这将删除所有行。我想保留第12行和第16行,因为这两行在gvkey[X]列之一中有值。如果gvkey2中有一个值,我也希望保留这些行。这同样适用于gvkey[1]…[5] 数据: 数据尝试: 输出: cod cod_fix pdpass sta
data %>%
head(20) %>%
drop_na(contains("gvkey"))
这将删除所有行。我想保留第12行和第16行,因为这两行在gvkey[X]
列之一中有值。如果gvkey2
中有一个值,我也希望保留这些行。这同样适用于gvkey[1]…[5]
数据:
数据尝试:
输出:
cod cod_fix pdpass standard_name uspto_assignee pdpco1 source begyr1 gvkey1
1 03 Foreign corp, incl. state-owned 0 12298245 02 MICRO INT LTD 782400 138961 m2006 2000 138961
2 03 Foreign corp, incl. state-owned 0 12298245 02MICRO INT LTD 782400 138961 m2006 2000 138961
endyr1 pdpco2 begyr2 gvkey2 endyr2 pdpco3 begyr3 gvkey3 endyr3 pdpco4 begyr4 gvkey4 endyr4 pdpco5 begyr5 gvkey5
1 2006 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2 2006 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
endyr5
1 NA
2 NA
使用base R
,我们可以使用Reduce
和lappy
data[!Reduce(`&`, lapply(data[startsWith(names(data), 'gvkey')], is.na)),]
# cod cod_fix pdpass standard_name uspto_assignee pdpco1 source
#12 03 Foreign corp, incl. state-owned 0 12298245 02 MICRO INT LTD 782400 138961 m2006
#16 03 Foreign corp, incl. state-owned 0 12298245 02MICRO INT LTD 782400 138961 m2006
# begyr1 gvkey1 endyr1 pdpco2 begyr2 gvkey2 endyr2 pdpco3 begyr3 gvkey3 endyr3 pdpco4 begyr4 gvkey4
#12 2000 138961 2006 NA NA NA NA NA NA NA NA NA NA NA
#16 2000 138961 2006 NA NA NA NA NA NA NA NA NA NA NA
# endyr4 pdpco5 begyr5 gvkey5 endyr5
#12 NA NA NA NA NA
#16 NA NA NA NA NA
cod cod_fix pdpass standard_name uspto_assignee pdpco1 source begyr1 gvkey1
1 03 Foreign corp, incl. state-owned 0 12298245 02 MICRO INT LTD 782400 138961 m2006 2000 138961
2 03 Foreign corp, incl. state-owned 0 12298245 02MICRO INT LTD 782400 138961 m2006 2000 138961
endyr1 pdpco2 begyr2 gvkey2 endyr2 pdpco3 begyr3 gvkey3 endyr3 pdpco4 begyr4 gvkey4 endyr4 pdpco5 begyr5 gvkey5
1 2006 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2 2006 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
endyr5
1 NA
2 NA
data[!Reduce(`&`, lapply(data[startsWith(names(data), 'gvkey')], is.na)),]
# cod cod_fix pdpass standard_name uspto_assignee pdpco1 source
#12 03 Foreign corp, incl. state-owned 0 12298245 02 MICRO INT LTD 782400 138961 m2006
#16 03 Foreign corp, incl. state-owned 0 12298245 02MICRO INT LTD 782400 138961 m2006
# begyr1 gvkey1 endyr1 pdpco2 begyr2 gvkey2 endyr2 pdpco3 begyr3 gvkey3 endyr3 pdpco4 begyr4 gvkey4
#12 2000 138961 2006 NA NA NA NA NA NA NA NA NA NA NA
#16 2000 138961 2006 NA NA NA NA NA NA NA NA NA NA NA
# endyr4 pdpco5 begyr5 gvkey5 endyr5
#12 NA NA NA NA NA
#16 NA NA NA NA NA