![](/img/trans.png)
[英]When I don't know column names in data.frame, when I use dplyr mutate function
[英]How to use data.frame column values as function argument in dplyr mutate function
我在使用dplyr
軟件包的mutate
dplyr
。 我想使用一列作為strptime
函數的參數
df示例:
rdf=data.frame(
d="20180514",
h=sample(1:25, 10)-1,
m=sample(1:60, 10)-1
)
df = data.frame(
stringtime = paste(rdf$d, rdf$h, rdf$m, sep=""),
timezone = sample(rep(c("GMT", "CET"), 5), 10)
)
df
stringtime timezone
1 201805141701 CET
2 201805140116 GMT
.
.
憑直覺,我想按以下方式運行命令:
df %>% mutate(timestamp = strptime(stringtime, tz=timezone, format="%Y%m%d%h%M")
不幸的是,我收到一條錯誤消息:
Error in [...]: invalid 'tz' value.
是否有人知道我犯了什么錯誤,或者是否有簡單的解決方法?
提前致謝!
由於存在不同的“時區”,因此可以選擇group_split
然后指定第first
“時區”
library(dplyr)
library(purrr)
df %>%
group_split(timezone) %>%
map_df(~ .x %>%
mutate(timestamp = as.POSIXct(stringtime,
format = "%Y%m%d%H%M", tz = as.character(first(timezone)))))
根據strptime
strptime將字符向量轉換為“ POSIXlt”類:其輸入x首先由as.character轉換。
當unclass
ed是一個list
時, mutate
不支持POSIXlt
類作為基礎結構
df %>%
mutate(timestamp = as.POSIXlt(stringtime, format="%Y%m%d%H%M"))
錯誤:列
timestamp
是不支持的類POSIXlt; 請改用POSIXct
而是使用as.POSIXct
df %>%
mutate(timestamp = as.POSIXct(stringtime, format="%Y%m%d%H%M"))
# stringtime timezone timestamp
#1 201805141314 GMT 2018-05-14 13:14:00
#2 20180514115 GMT 2018-05-14 11:05:00
#3 201805141434 CET 2018-05-14 14:34:00
#...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.