r - 按组过滤 NA
问题描述
我有这个 df
df <- data.frame(
id = c(1L,1L,1L,2L,2L,3L),
keyword = c("car","hospital",NA,"cat",NA,NA))
我想得到这个
df <- data.frame(
id = c(1L,1L,2L,3L),
keyword = c("car","hospital","cat",NA))
如果有关键字,我想保留它,如果没有,请保留 NA
尝试类似的东西
df %>% group_by(id) %>% filter(!is.na(keyword) | keyword != " ")
解决方案
可能的解决方案:首先我们删除所有包含 NA 的行keyword
,然后为可能丢失id
的 s 添加新行(所有其他列现在都将包含 NA):
library(dplyr)
library(tidyr)
df %>%
filter(!is.na(keyword)) %>%
full_join(df %>% select(id) %>% unique())
回报:
id keyword 1 1 car 2 1 hospital 3 2 cat 4 3 <NA>
推荐阅读
- asynchronous - Dart 中的 Stream 和 Future
- ruby-on-rails - Rails bootstrap_checkbox 不反映表的值 - 显示全部关闭
- kubernetes - Flyway - Springboot - Kubernetes
- selenium-webdriver - 无法使用 ID 或名称定位元素
- python - 日期列上的左合并在熊猫中表现得很奇怪
- generics - 如何存储模型的收集路径?
- spring-boot - 如何在spring boot应用程序中避免“类路径资源[...]无法打开,因为它不存在”?
- asp.net-mvc - 401 Unauthorized : WWW-Authenticate: Bearer
- if-statement - 这个表达式有什么作用?Gui % (MainGui:=!MainGui) ? “隐藏”:“显示”
- dart - 子字符串直到字符串中第一次出现逗号