将 strptime 应用于本地数据帧
applying strptime to local data frame
我想我有一个与 \
有关的问题,但我无法处理。
这是我用 read_csv
阅读的 data.frame 的 DateTime 专栏的摘录:
earthquakes[1:20,1]
Source: local data frame [20 x 1]
DateTime
(chr)
1 1964/01/01 12:21:55.40
2 1964/01/01 14:16:27.60
3 1964/01/01 14:18:53.90
4 1964/01/01 15:49:47.90
5 1964/01/01 17:26:43.50
我的目标是提取这里的岁月。手动执行
> format(strptime(c("1964/01/01 12:21:55.40","1964/01/01 12:21:55.40","1964/01/01 14:16:27.60"), "%Y/%m/%d %H:%M:%OS"), "%Y")
[1] "1964" "1964" "1964"
按预期工作。然而,
> strptime(earthquakes[1:5,1], "%Y/%m/%d %H:%M:%OS")
DateTime
NA
我的直觉是问题与
有关
as.character(earthquakes[1:5,1])
[1] "c(\"1964/01/01 12:21:55.40\", \"1964/01/01 14:16:27.60\", \"1964/01/01 14:18:53.90\", \"1964/01/01 15:49:47.90\", \"1964/01/01 17:26:43.50\")"
因此,数据框中的列也通过转义符包含 " \"
。但我不知道如何从这里处理它。
鉴于年份是前四个条目,这样做似乎也可以(但不太优雅,恕我直言)
substr(earthquakes[1:5,1],1,4)
但是那相应地给出
[1] "c(\"1"
显然,我可以
substr(earthquakes[1:5,1],4,7)
但这只适用于第一行。
显然你有一个 dplyr::tbl_df
,默认情况下,[
永远不会将单个列简化为原子向量(与应用于基础 R [=] 的 [
相反14=]).因此,您可以使用 [[
或 $
来提取列,然后将其简化为原子向量。
一些示例:
data(iris)
library(dplyr)
x <- tbl_df(iris)
x[1:5, 1]
#Source: local data frame [5 x 1]
#
# Sepal.Length
# (dbl)
#1 5.1
#2 4.9
#3 4.7
#4 4.6
#5 5.0
iris[1:5, 1]
#[1] 5.1 4.9 4.7 4.6 5.0
x[[1]][1:5]
#[1] 5.1 4.9 4.7 4.6 5.0
x$Sepal.Length[1:5]
#[1] 5.1 4.9 4.7 4.6 5.0
我想我有一个与 \
有关的问题,但我无法处理。
这是我用 read_csv
阅读的 data.frame 的 DateTime 专栏的摘录:
earthquakes[1:20,1]
Source: local data frame [20 x 1]
DateTime
(chr)
1 1964/01/01 12:21:55.40
2 1964/01/01 14:16:27.60
3 1964/01/01 14:18:53.90
4 1964/01/01 15:49:47.90
5 1964/01/01 17:26:43.50
我的目标是提取这里的岁月。手动执行
> format(strptime(c("1964/01/01 12:21:55.40","1964/01/01 12:21:55.40","1964/01/01 14:16:27.60"), "%Y/%m/%d %H:%M:%OS"), "%Y")
[1] "1964" "1964" "1964"
按预期工作。然而,
> strptime(earthquakes[1:5,1], "%Y/%m/%d %H:%M:%OS")
DateTime
NA
我的直觉是问题与
有关as.character(earthquakes[1:5,1])
[1] "c(\"1964/01/01 12:21:55.40\", \"1964/01/01 14:16:27.60\", \"1964/01/01 14:18:53.90\", \"1964/01/01 15:49:47.90\", \"1964/01/01 17:26:43.50\")"
因此,数据框中的列也通过转义符包含 " \"
。但我不知道如何从这里处理它。
鉴于年份是前四个条目,这样做似乎也可以(但不太优雅,恕我直言)
substr(earthquakes[1:5,1],1,4)
但是那相应地给出
[1] "c(\"1"
显然,我可以
substr(earthquakes[1:5,1],4,7)
但这只适用于第一行。
显然你有一个 dplyr::tbl_df
,默认情况下,[
永远不会将单个列简化为原子向量(与应用于基础 R [=] 的 [
相反14=]).因此,您可以使用 [[
或 $
来提取列,然后将其简化为原子向量。
一些示例:
data(iris)
library(dplyr)
x <- tbl_df(iris)
x[1:5, 1]
#Source: local data frame [5 x 1]
#
# Sepal.Length
# (dbl)
#1 5.1
#2 4.9
#3 4.7
#4 4.6
#5 5.0
iris[1:5, 1]
#[1] 5.1 4.9 4.7 4.6 5.0
x[[1]][1:5]
#[1] 5.1 4.9 4.7 4.6 5.0
x$Sepal.Length[1:5]
#[1] 5.1 4.9 4.7 4.6 5.0