Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Var1或Var2创建列_R_Date_Dataframe - Fatal编程技术网

使用Var1或Var2创建列

使用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只会将它

我有一个带有两个变量的数据框: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 <- 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