使用Var1或Var2创建列
我有一个带有两个变量的数据框:date1和date2。我想创建显示最新日期的第三列 我试过这个: 首先,我创建第三个变量使用Var1或Var2创建列,r,date,dataframe,R,Date,Dataframe,我有一个带有两个变量的数据框:date1和date2。我想创建显示最新日期的第三列 我试过这个: 首先,我创建第三个变量 df$Column3 <-"2011-11-10" 然后我定义了如何选择值: df$Column3 <- for (i in seq(1, 10)) {df[i,]$Column3 <-max(c(df[i,]$Date1,df[i,]$Date2)) } 它不起作用。有什么想法吗 首先需要将Date1和Date2列转换为日期格式,否则R只会将它
df$Column3 <-"2011-11-10"
然后我定义了如何选择值:
df$Column3 <- for (i in seq(1, 10))
{df[i,]$Column3 <-max(c(df[i,]$Date1,df[i,]$Date2))
}
它不起作用。有什么想法吗 首先需要将Date1和Date2列转换为日期格式,否则R只会将它们作为常规字符读取:
df <- data.frame(Date1 = c("2011-11-10", "2012-10-23", "2009-09-09"),
Date2 = c("2002-07-06", "2014-10-13", "2001-08-07"))
df$Date1 <- as.Date(df$Date1)
df$Date2 <- as.Date(df$Date2)
然后,您可以使用应用函数获取最大值:
df$LatestDate <- apply(df[,1:2], 1, max)
df
Date1 Date2 LatestDate
1 2011-11-10 2002-07-06 2011-11-10
2 2012-10-23 2014-10-13 2014-10-13
3 2009-09-09 2001-08-07 2009-09-09
更好地利用可重复的数据。否则的话,答案可能就太离谱了 无论如何,如果理解正确,您希望col3是更晚的日期。我用的是tidyverse和lubridate的dplyr 一些数据:
Column1 <- ymd(c("2011-11-09", "2011-11-10", "2011-11-12"))
Column2 <- ymd(c("2011-11-10", "2011-11-10", "2011-11-11"))
df <- data.frame(Column1, Column2)
# Add 3rd column
library(tidyverse)
library(lubridate)
df <- df %>%
mutate(Column3 = if_else(Column2>Column1, Column2, Column1))
看看pmax。如果你想要DIY:df$Column3 Date2,Date1,Date2遵循@jogo的建议,pmax可能是最简单的方法:df$Column3
Column1 Column2 Column3
2011-11-09 2011-11-10 2011-11-10
2011-11-10 2011-11-10 2011-11-10
2011-11-12 2011-11-11 2011-11-12