R 根据另一列中的匹配条件筛选列
我正在尝试使用dplyr执行一个简单的过滤,但它似乎不符合我想要做的 我想以仅当时间与类别匹配时基于时间过滤数据帧为例,然后查看列值R 根据另一列中的匹配条件筛选列,r,filter,dplyr,R,Filter,Dplyr,我正在尝试使用dplyr执行一个简单的过滤,但它似乎不符合我想要做的 我想以仅当时间与类别匹配时基于时间过滤数据帧为例,然后查看列值 这似乎不是我真正想要得到的,因为我想将与T0值匹配的整行子集如果我理解正确,您可以使用subset函数 subset(df, Time == "T0" & Value < 5 | Time != "T0") dplyr 如果我理解正确,您可以使用subset函数 subset(df, Time == "T0" & Value < 5
这似乎不是我真正想要得到的,因为我想将与T0值匹配的整行子集如果我理解正确,您可以使用subset函数
subset(df, Time == "T0" & Value < 5 | Time != "T0")
dplyr
如果我理解正确,您可以使用subset函数
subset(df, Time == "T0" & Value < 5 | Time != "T0")
dplyr
我想这会管用的
dates <- rep(
seq(as.numeric(as.Date("01-01-2020", format = "%d-%m-%Y")),
as.numeric(as.Date("01-10-2020", format = "%d-%m-%Y"))),
each = 24
)
value <- runif(length(dates), 1, 10)
time <- runif(length(dates), 0, 1)
data <- cbind(dates, value, time)
data <- tibble::as_tibble(data)
out <- data %>% filter(value != 0 & time > 5)
isTRUE(sum(out$time < 5 | out$value == 0) == 0)
#[1] TRUE
! 我想这会管用的
dates <- rep(
seq(as.numeric(as.Date("01-01-2020", format = "%d-%m-%Y")),
as.numeric(as.Date("01-10-2020", format = "%d-%m-%Y"))),
each = 24
)
value <- runif(length(dates), 1, 10)
time <- runif(length(dates), 0, 1)
data <- cbind(dates, value, time)
data <- tibble::as_tibble(data)
out <- data %>% filter(value != 0 & time > 5)
isTRUE(sum(out$time < 5 | out$value == 0) == 0)
#[1] TRUE
! 创建可在其上筛选的帮助器字段可能是最容易的
library(dplyr)
df %>%
mutate(isFilter = case_when(Time == "T0" & Value > 5 ~ 1, TRUE ~ 0)) %>%
filter(isFilter == 0)
SubjectID Treatment Time Value isFilter
1 B0 Control T0 4.8 0
2 A3 Amutant T3 4.0 0
3 B1 Control T1 3.0 0
4 B3 Control T3 6.5 0
5 C2 Bmutant T2 2.0 0
6 C1 Bmutant T1 3.0 0
创建可在其上进行筛选的帮助器字段可能是最容易的
library(dplyr)
df %>%
mutate(isFilter = case_when(Time == "T0" & Value > 5 ~ 1, TRUE ~ 0)) %>%
filter(isFilter == 0)
SubjectID Treatment Time Value isFilter
1 B0 Control T0 4.8 0
2 A3 Amutant T3 4.0 0
3 B1 Control T1 3.0 0
4 B3 Control T3 6.5 0
5 C2 Bmutant T2 2.0 0
6 C1 Bmutant T1 3.0 0
也许你只是在找这样的东西:df%>%filter Time==T0,Value,但我只需要看Value,也许你只是在找这样的东西:df%>%filter Time==T0,Value,但我只需要看类似于我上面回答的值,我只需要基于T0进行筛选,这不会影响其他时间值。最后一条语句可以简化为df%>%filterTime!=T0 | Value<5您能更详细地解释一下哪里出了问题吗?由于代码现在从T0中删除了值>5的值,而其他值保留下来。我认为查看数据集确实有效,非常感谢!!!:与我上面的回答类似,我只需要基于T0进行过滤,这不会影响其他时间值。最后一条语句可以简化为df%>%filterTime!=T0 | Value<5您能更详细地解释一下哪里出了问题吗?由于代码现在从T0中删除了值>5的值,而其他值保留下来。我认为查看数据集确实有效,非常感谢!!!:如果您只测试一个条件,那么最好使用基本ifelse;更好的是:isFilter=as.numericTime==T0&Value>5如果您只测试一个条件,那么最好使用基本ifelse;更好的是:isFilter=as.numericTime==T0&Value>5