如何在R中连接同一数据集中的两列
我有一个按以下顺序排列的数据集:如何在R中连接同一数据集中的两列,r,R,我有一个按以下顺序排列的数据集: Date Time Open High Low Close Volume NumberOfTrades BidVolume AskVolume 1 2011/12/22 02:00:00 5805.5 5820.5 5804.0 5820.5 253 96 161 71 2 2011/12/22 02:01:00 5819.0 5820.0 5813.0 5817.0 77 57
Date Time Open High Low Close Volume NumberOfTrades BidVolume AskVolume
1 2011/12/22 02:00:00 5805.5 5820.5 5804.0 5820.5 253 96 161 71
2 2011/12/22 02:01:00 5819.0 5820.0 5813.0 5817.0 77 57 43 23
3 2011/12/22 02:02:00 5816.5 5820.0 5816.0 5819.0 30 22 9 14
我需要在a列(Date
)之前添加一列,该列将是a+B
(“Date”
“Time”),然后我将能够使我的数据集成为XTS(XTS需要unick密钥)
最终结果如下:
DateTime Date Time Open High Low Close Volume NumberOfTrades BidVolume AskVolume
1 2011/12/22 02:00:00 2011/12/22 02:00:00 5805.5 5820.5 5804.0 5820.5 253 96 161 71
谢谢使用
粘贴
组合日期
和时间
列,并使用as.POSIXct
将字符串转换为日期时间类
假设您的数据帧称为df:
df$DateTime = as.POSIXct(paste(df$Date, df$Time))
将DateTime
添加到数据框后,根据@RichardScriven的注释,可以按如下方式重新排列列的顺序:
df = df[ , c(length(df), 1:(length(df)-1))]
或者,您可以添加DateTime
作为第一列,如下所示:
df = data.frame(DateTime=as.POSIXct(paste(df$Date, df$Time)), df)
最好只按列的实际名称引用列(例如,在本例中为
日期
和时间
),并避免使用通用字母(如A和B),这些字母在Excel等电子表格程序中有意义,但在R
中没有任何内在意义。而不是调用data.frame
,您可以使用df[c(长度(df),1:(长度(df)-1)]
重新排列列,我知道,但对于R
新手来说,这似乎是最直接、最不容易出错的方法。如果可以的话,我有两个数据帧,具有不同长度的行(天数不同)。如何将2个df匹配为具有相同长度,以及何时将上述列用作匹配的索引。再次感谢!如果要将第二个数据帧中的行(我们称之为df2
)与第一个数据帧中的行(df1
)具有相同的Date
和Time
)合并,请使用merge
。例如:merge(df1,df2,by=c(“日期”,“时间”),all.x=TRUE)
。这将保留df1
的所有行,并合并到df2
的所有匹配行中。要仅保留df1
中的行以及df2中的匹配项,请设置all.x=FALSE
)。请注意,如果df2
中有多行与df1
中的一行具有相同的日期和时间,则merge
将为df2
中的每个额外匹配行向输出数据框添加一行。谢谢。我稍后会尝试这个,因为现在我对这里的主线程有一个问题。我重新打开我的rstudio,现在当我运行“XG1min=data.frame(DateTime=as.POSIXct(粘贴(XG1min$Time)),XG1min”之前的同一行时,我得到一个错误:as.POSIXlt.character(x,tz,…)中的错误:字符串不是标准的明确格式。它以前是如何工作的,为什么现在不行?