R 在不同的变量上,用附加条件在每组中查找最长日期。获取错误Max()&;未为日期对象定义
这是我拥有的示例数据:R 在不同的变量上,用附加条件在每组中查找最长日期。获取错误Max()&;未为日期对象定义,r,R,这是我拥有的示例数据: t<- data.frame(id=c(1,1,2,2,3,3), measureX =c(1,2,1,3,1,1), date=c('2021-1-1','2021-1-2','2021-1-3','2021-1-4','2021-1-5','2021-1-6')) t$date <- as.Date(t$date) 你知道如何做到这一点吗?谢谢大家! 库(lubridate) library(lubridate) library(dplyr) t &l
t<- data.frame(id=c(1,1,2,2,3,3), measureX =c(1,2,1,3,1,1), date=c('2021-1-1','2021-1-2','2021-1-3','2021-1-4','2021-1-5','2021-1-6'))
t$date <- as.Date(t$date)
你知道如何做到这一点吗?谢谢大家! 库(lubridate)
library(lubridate)
library(dplyr)
t <- data.frame(id = c(1,1,2,2,3,3),
measureX = c(1,2,1,3,1,1),
date = c('2021-1-1','2021-1-2','2021-1-3','2021-1-4','2021-1-5','2021-1-6'))
t %>%
mutate(date = ymd(date)) %>%
group_by(id) %>%
summarize(max(date))
图书馆(dplyr)
t%
突变(日期=ymd(日期))%>%
分组依据(id)%>%
汇总(最长(日期))
首先,max()
将向量而不是逻辑语句作为其参数。因此,我们将使用filter()
来执行我们的逻辑
其次,t
是一个data.frame
,因此需要在summary()
(或summary()
,具体取决于拼写首选项)命令中使用max
我不认为这是“另一个变量上的条件”。啊,遗漏了那部分。谢谢非常感谢。但是我想要max(date&measureX==1),max()中还有一个额外的条件,它现在不起作用。是的,看起来@dyrland为过滤添加了一行谢谢。我举了这个例子。在我的数据中,我真的需要根据另一个变量的条件找到最大值。这种情况在实际情况下可能会有所不同。所以不总是像示例中那样==1。这意味着我不能总是事先做一个过滤器。即使在这个简单的例子中,当我尝试max(t$measureX==1&t$id)时,它也能工作。但是当我将其更改为max(t$measureX==1&t$date)时,它会给出一个错误。您不能在
max()中提供逻辑(measureX==1&date
)我想您的下一个问题是:如何动态筛选数据?(或者对不同的组进行不同的筛选!)我实际上需要基于条件的最长日期,然后使用最长日期来做其他事情。所以我无法对数据集进行大量过滤。Huzzah用于评论、迭代和答案!
library(lubridate)
library(dplyr)
t <- data.frame(id = c(1,1,2,2,3,3),
measureX = c(1,2,1,3,1,1),
date = c('2021-1-1','2021-1-2','2021-1-3','2021-1-4','2021-1-5','2021-1-6'))
t %>%
mutate(date = ymd(date)) %>%
group_by(id) %>%
summarize(max(date))
t<- data.frame(id=c(1,1,2,2,3,3), measureX =c(1,2,1,3,1,1), date=c('2021-1-1','2021-1-2','2021-1-3','2021-1-4','2021-1-5','2021-1-6'))
t$date <- as.Date(t$date)
t %>%
group_by(id) %>%
filter(measureX == 1) %>% #condition on another variable
summarize(max(date))
t %>%
group_by(id) %>%
mutate(max_date_given_condition = max(date[measureX == 1])) %>%
ungroup() #to be safe