为什么R在没有';数据帧中不存在?

为什么R在没有';数据帧中不存在?,r,R,我有在一个数据帧中采集样本的日期时间: samples <- structure(list(EC = c(2.31, 1.225, 1.749, 1.268, 1.904, 2.09, 2.08, 2.08, 2.17, 2.23, 2.29, 2.29, 2.38, 2.44, 2.33, 2.35, 2.23, 2.2, 2.2, 2.3, 2.37, 2.33, 1.301, 1.292, 1.471, 1.888, 1.977, 2.05, 2.13, 2.21, 2.3,

我有在一个数据帧中采集样本的日期时间:

samples <- structure(list(EC = c(2.31, 1.225, 1.749, 1.268, 1.904, 2.09, 
2.08, 2.08, 2.17, 2.23, 2.29, 2.29, 2.38, 2.44, 2.33, 2.35, 2.23, 
2.2, 2.2, 2.3, 2.37, 2.33, 1.301, 1.292, 1.471, 1.888, 1.977, 
2.05, 2.13, 2.21, 2.3, 2.34, 2.41, 2.43, 2.48, 2.5), TP = c(25.5, 
148, 121, 65.1, 68, 104, 175, 80.7, 75, 68.7, 26.7, 59.6, 114, 
39.1, 27.8, 26.8, 34.2, 136, 47.3, 52.7, 30.4, 37.7, 504, 426, 
225, 61.2, 133, 167, 109, 58, 46.6, 34.6, 37.2, 27.9, 47.5, 21.8
), SRP = c(14.3, 24, 32.7, 22, 22.5, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA), DateTime = structure(c(1615287900, 
1615332900, 1615376100, 1615697700, 1615998900, 1616060700, 1616147100, 
1616319900, 1616406300, 1616492700, 1616579100, 1616607600, 1616694000, 
1616780400, 1616851800, 1616951700, 1617033600, 1617076500, 1617120000, 
1617162900, 1617206400, 1617249300, 1617274500, 1617275100, 1617292800, 
1617379200, 1617422400, 1617465600, 1617508800, 1617552000, 1617595200, 
1617638400, 1617681600, 1617724800, 1617768000, 1617809400), tzone = "UTC", class = c("POSIXct", 
"POSIXt"))), row.names = c(NA, -36L), class = c("tbl_df", "tbl", 
"data.frame"))
您可以看到第15行包含NA,因此我检查是否缺少该日期的流量数据:

which(Flow$DateTime == "2021-03-27 13:30:00 ")
[1] 5255
5255 2021-03-27 12:40:00 0.146 
据我所知,这意味着Flow dataframe在这一行有这个datetime,所以我打开dataframe并查看,但在那一行有一个不同的datetime:

which(Flow$DateTime == "2021-03-27 13:30:00 ")
[1] 5255
5255 2021-03-27 12:40:00 0.146 
更奇怪的是,如果我去2021-03-27 13:30:00应该在的地方,它甚至不存在:

5264 2021-03-27 13:25:00 0.153 
5266 2021-03-27 13:50:00 0.182

为什么R会给出错误的行?

您到底是如何“打开数据框并查看”的
哪个
应该为您提供索引。您应该能够使用
流[5255,]
查看该行。输出之前的值是行名称。请注意,行名称可能不同于行索引,尤其是在数据已被过滤或合并的情况下。如果您以类似于
dput
的格式提供数据,将更容易为您提供帮助。@MrFlick我编辑了这篇文章,这是我第一次使用dput(),因此不确定包含多少内容。当我做
Flow[5255,]
时,我得到
DateTime Flow 5310 2021-03-27 17:30:00 0.203
我认为您遇到了时区问题。将日期指定为字符串时,将假定您的本地时区。但是您在
Flow
中的时间是UTC/GMT,所以请尝试
哪个(Flow$DateTime==as.POSIXct(“2021-03-27 13:30:00”,tz=“GMT”)
来解释一下。谢谢,这是一个时区问题,在格式化
示例时
我也没有使用
tz='UTC“
这是我为
Flow
做的,以避免处理夏令时。也谢谢你编辑这篇文章,我现在知道如何使用dput()。
5264 2021-03-27 13:25:00 0.153 
5266 2021-03-27 13:50:00 0.182