- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我主要是一名 Python 程序员,但仍在学习 R。我遇到问题的数据可用 here ,但我在下面做了一个关于这个问题的小例子。
R 的 complete.cases()
函数应返回一个逻辑向量,指示测试对象的哪些行不包含 NA 值。
df <- data.frame(val1=c(1, 2, NA, 4),
val2=c("12:00", "10:30", "09:15", "05:00"))
print(df)
## val1 val2
## 1 1 12:00
## 2 2 10:30
## 3 NA 09:15
## 4 4 05:00
print(length(df$val1) == length(df$val2))
## [1] TRUE
complete.cases(df)
## [1] TRUE TRUE FALSE TRUE
这按预期工作:一个 False
值,对应于 df$val1
中的 NA
值。
我遇到了一个问题,在通过 strptime
将字符向量转换为 POSIXlt
向量后,complete.cases
不再由于以下错误而工作:
complete.cases(df) 中的错误:并非所有参数都具有相同的长度
。
例如:
df$val2 <- strptime(df$val2, format="%H:%M")
print(df)
## val1 val2
## 1 1 2015-01-14 12:00:00
## 2 2 2015-01-14 10:30:00
## 3 NA 2015-01-14 09:15:00
## 4 4 2015-01-14 05:00:00
print(length(df$val1) == length(df$val2))
## [1] TRUE
complete.cases(df) # This line now causes the error.
如您所见,df$val1
和 df$val2
的长度仍然相同。我在这里错过了什么吗?为什么在我使用 strptime
转换时间字符串后,complete.cases
会停止工作?
我确信我可以解决这个特定问题(我真的不需要通过strptime
转换数据),我只是好奇为什么complete.cases
不适合我。
系统信息:
最佳答案
strptime()
生成 POSIXlt 值,这些值在下面列出。这就是给你带来问题的原因。
df <- data.frame(
val1 = c(1, 2, NA, 4),
val2 = c("12:00", "10:30", "09:15", "05:00")
)
df$val2 <- strptime(df$val2, format="%H:%M")
is.list(df$val2)
# [1] TRUE
<小时/>
旁注:如果您使用 complete.cases()
的目的是对数据进行子集化,则 na.omit(df)
将使用 POSIXlt 值。
正如 @BondedDust 所指出的,如果可以的话,您应该避免在数据框中使用 POSIXlt 值。但我们可以使用 POSIXct 值,它们只是下面的整数,并且 complete.cases()
工作得很好。
再次从原来的 df
开始...
df <- data.frame(
val1 = c(1, 2, NA, 4),
val2 = c("12:00", "10:30", "09:15", "05:00")
)
df$val2 <- as.POSIXct(df$val2, format="%H:%M")
complete.cases(df)
# [1] TRUE TRUE FALSE TRUE
此外,如果您检查每个 df$val2
的 unclass()
值,差异将变得非常明显。
关于r - 使用 POSIXlt 完成.cases 和 data.frames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957819/
当 R 在此命令上抛出警告消息时 `setwd("~/Desktop/Project R") Warning message: In format.POSIXlt(as.POSIXlt(x), ...
大家好,我在将时间戳转换为 POSIXlt 时遇到问题,稍后需要从这个时间戳中提取 Year,month,dayofmoth,hour,min,sec 2015-12-01 00:04:39
我在这里关注了一些有关如何将字符向量转换为日期时间类的问题。我经常看到两种方法,strptime 和 as.POSIXct/as.POSIXlt 方法。我查看了这两个函数,但不清楚它们有什么区别。 s
在R中将unix时间戳转换为datetime对象时,为什么会看到差异? > as.POSIXlt(1268736919, origin="1970-01-01", tz="America/New_Yo
这个问题在这里已经有了答案: Why does unlist() kill dates in R? (2 个回答) 5年前关闭。 我有一个多级列表对象,其中所有元素都属于 POSIXlt 类: [[1
我正在创建一些随机数: data dataframe X1 X2 1 0.7981783 0.13233858 2 0.9592338 0.05512942 3 0
data.frame 的列之一是“字符” 例如:2012 年 3 月 31 日晚上 9:56:53 /> class(columnName) [1] "character" />ttable[,c(
我最近遇到了将 POSIXlt 日期对象与日期字符串进行比较的 R 代码。 as.POSIXlt.date("2007-02-02") >= "2007-02-01" [1] FALSE 结果,至少对
当我尝试在我的数据集中为“date”(class=POSIXlt 的变量)本地化时间时遇到错误。示例代码如下: # All dates are coded by survey software in
假设我有一个 POSIXct 对象的输入向量: times.input <- c( as.POSIXct('2013-01-01 00:00:00', tz='GMT'), as.POSIXc
非常基本,只是不明白 tz 论点是什么,如果不是因为这个...... dateIWantToConvert <- as.Date("2013-06-01") #the format of my sta
我有个问题。我下载了数据并将日期转换为 POSIXlt 格式 df% group_by(days) %>% summarise(sum=sum(value)) 我有一个错误: 错误:“transact
我试图使用 Posix 时间的 Sys.Date() 获取昨天的最后一分钟。 force_tz(as.POSIXlt(Sys.Date()-1), tz = 'America/New_York') +
假设我有以下数据 plt <- seq(as.POSIXlt("2010-01-01 01:20:30"), as.POSIXlt("2010-12-31 12:00:30"),
我有以下问题:我得到的数据中的日期列包含由于夏令时不存在的日期。 (例如2015-03-29 02:00在中欧时间不存在,因为DST在这一天生效,时钟直接设置为01:59到03:00) 是否有一种简单
这是一个奇怪的神器。我正在将数以万计的字符向量转换为日期时间类,如下所示: alles$DateTime=as.POSIXct(alles$roughdate, tz="EST",format="%Y
美好的一天 我在此处的一篇文章中读到“函数 Forecast::plot.forecast 并非设计用于与 axis.Date 或 axis.POSIXct (在包 Forecast 中不使用)一起使
我正在 R 中绘制一个情节(在一个情节中绘制三天的时间序列)。我有一个“POSIXlt”“POSIXt”向量,我只需要保留没有年、月、日的时间(小时、分钟……)。 "2004-09-08 13:50:
由 documentation of the class POSIXlt POSIXlt 类的对象是命名列表。 确实: > tm class(tm) [1] "POSIXlt" "POSIXt" >
我有一个函数可以从多个字符串输入创建时间戳: # Create timestamp from date, time, and timezone strings str_to_dt d dlist
我是一名优秀的程序员,十分优秀!