r - 选择包含值 x 或值 y 的 df
问题描述
我的数据整理有问题。
我的一个列中有一个具有不同日期的data.frame。还有一列我正在分组,但这不应该是问题。现在,我只想过滤 df,新的 df 包含日期 x 或日期 y(例如 20-03-18 或 20-03-19)。我尝试了函数 xor() 但我挣扎了很多并且没有得到任何结果。
new_df<-df%>%
group_by(animals_id)%>%
filter(any(day==xor("20-03-18", "20-03-19"))
最后,我只想拥有包含日期“20-03-18”或(不是&)“20-03-19”的animals_id
我也尝试过filter(any(day==c("20-03-18", "20-03-19"))
,但这只是包含两个日期的过滤器
谢谢你的帮助!
df<-structure(list(animals_id = c("Hedwig", "Hedwig", "Hedwig", "Hedwig",
"Hedwig", "Hedwig", "Heidi", "Heidi", "Heidi",
"Heidi", "Heidi", "Heidi"), day = structure(c(17937,
17938, 17939, 17940, 17941, 17942, 18304, 18305, 18306, 18307,
18308, 18309), class = "Date")), row.names = c(NA, -12L), class = "data.frame")
解决方案
因为您提供的数据没有包含日期“2020-03-18”或“2020-03-19”的行,所以我必须包含一些包含这些日期的示例行,如下所示:
df <- bind_rows(
df,
data.frame(
animals_id = c("Hedwig", "Hedwig"),
day = as.Date(c("2020-03-18", "2020-03-19"))
)
)
考虑到这一点,以及您的最后评论,我知道您首先要确定animals_id
在这些日期中具有一定价值的所有内容。然后,您要过滤属于这些的所有数据animals_id
。换句话说,您要消除,animals_id
在这些日期中没有任何价值的所有数据。在我的示例中,只有“Hedwig” id 在这些日期中有一些值,因此您要过滤属于“Hedwig” id 的所有数据。
首先,为了识别所有的animals_id
,我使用包中的运算%in%
符。这样,将选择包含其中一些日期的每一行。然后我按 animal_id 分组并用一些统计数据进行总结,因为我只对确定这些过滤行中的动物 id 感兴趣。filter()
dplyr
filter()
library(dplyr)
library(magrittr)
select_animals_id <- df %>%
filter(day %in% as.Date(c("2020-03-18", "2020-03-19"))) %>%
group_by(animals_id) %>%
count()
然后,我再次使用%in%
运算符 infilter()
来搜索表中的每一行df
,其中列中的值animals_id
存在于表中的animals_id
列中select_animals_id
。因为表中只存在“Hedwig” id select_animals_id
,所以%in%
操作员将找到列中df
包含“Hedwig”的每一行animals_id
。
df <- df %>%
filter(animals_id %in% select_animals_id$animals_id)
结果是:
animals_id day
1 Hedwig 2019-02-10
2 Hedwig 2019-02-11
3 Hedwig 2019-02-12
4 Hedwig 2019-02-13
5 Hedwig 2019-02-14
6 Hedwig 2019-02-15
7 Hedwig 2020-03-18
8 Hedwig 2020-03-19
推荐阅读
- java - 为什么递归中的值没有改变?
- regex - 使用批量多个文本替换为正则表达式 (Windows)
- python - 因变量与自变量
- java - 在 java 中访问另一个类的属性时出现 NullPointerException
- c++ - 我需要帮助编写一个检查另一个变量的数据类型的函数
- java - 以编程方式将多个字符插入 Bing 搜索引擎并为每个字符执行搜索
- jquery - Youtube 视频有时无法在加载页面上播放
- ios - 为什么模拟器iphone上的导航栏没有出现?
- c# - c# 嵌套 json 到对象(当前与 json.net)
- angular - 与 SignalR 聊天 | 角 8 | ASP.NET 核心 2.1