我正在使用POSIXctR中的一些对象,并且想知道如何控制答案的格式.
train$targetVar1 <- as.numeric(as.POSIXct(as.character(string1),tz="UTC") - as.POSIXct(as.character(string2),tz="UTC"))
Run Code Online (Sandbox Code Playgroud)
答案似乎弹出sec,min与hr数据没有明显的关系.
我看着使用POSIXlt帮助文件使它听起来像lt对象为每个时间尺度创建一个向量,但无法弄清楚如何使用各种方法访问向量,如:
> posixObj1 <- as.POSIXlt("2012-12-12 12:00:00")
> posixObj1$sec
[1] 0
> posixObj1$min
[1] 0
> posixObj1$hour
[1] 12
> x <- as.POSIXlt("2012-12-12")
> x
[1] "2012-12-12"
> format(x, "%s")
[1] ""
Run Code Online (Sandbox Code Playgroud)
有什么建议?
注意:我在Windows 7机器上运行R 2.15.1.
我在加载大量的表到SQL Server,并从它们转换的过程中varchar,以特定的数据类型(int,date,等).令人沮丧的是,有多少种不同的方法可以打破从字符串到数字(int,decimal等)的转换,并且没有一种简单的诊断工具来查找有问题的行(除此之外ISNUMERIC()不能一直工作).
这是我打破转换的方法列表,不会被抓住ISNUMERIC().
这是我目前正在使用的补偿:
SELECT
CASE
WHEN [MyColumn] IN ('','-') THEN NULL -- deals with blanks
WHEN [MyColumn] LIKE '%E%' THEN CONVERT(DECIMAL(20, 4), CONVERT(FLOAT(53), [MyColumn])) -- deals with scientific notation
ELSE CAST(REPLACE(REPLACE([MyColumn] , '$', ''), '-', '') AS DECIMAL(20, 4))
END [MyColumn] -- deals with special characters
FROM
MyTable
Run Code Online (Sandbox Code Playgroud)
有没有其他人有其他人?还是好的诊断方法?
我试图将答案减去2次.
这是一个例子:
> timer2$tdif2 <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S:%OS") - strptime(as.character(timer2$time2), "%H:%M:%S:%OS"))
> timer2$tdif1 <- as.numeric(strptime(as.character(timer2$time2), "%H:%M:%S%OS") - strptime(as.character(timer2$time1), "%H:%M:%S%OS"))
> timer2$tdif2 <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S:%OS") - strptime(as.character(timer2$time2), "%H:%M:%S:%OS"))
> timer2$tdifMax <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S.%OS") - strptime(as.character(timer2$time1), "%H:%M:%S.%OS"))
> head(timer2)
time1 time2 time3 tdif1 tdif2 tdifMax
1 08:00:20.799 08:00:20.799 08:00:20.799 0.0000000000 NA 0
2 08:00:21.996 08:00:22.071 08:00:23.821 -0.9249999523 NA 2
3 08:00:29.200 08:00:29.200 08:00:29.591 0.0000000000 NA 0
4 08:00:31.073 08:00:31.372 08:00:31.384 0.2990000248 NA 0
5 08:00:31.867 08:00:31.867 08:00:31.971 0.0000000000 NA 0
6 08:00:37.174 08:00:38.073 …Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server SSMS输出查询到空格分隔的文本文件.除了一个例外,它工作正常.在文件的底部,它打印一条消息,显示它打印的行数,就像查询路由到结果网格时一样SSMS:
id sales region
001 100,000 North
001 100,000 North
001 100,000 North
001 100,000 North
001 100,000 North
... ... ...
(78482 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为有多个文件,它们被读入另一个程序,此消息导致错误.
我查看了输出和查询选项,但没有看到任何解决方法.
有什么建议?
我有一个我正在尝试处理的字符串向量,但我无法摆脱一些奇怪的字符.
当我读取csv文件时,我使用了以下行:
train <- read.csv(file="files/file1.csv", header = T, encoding = "UTF-8")
Run Code Online (Sandbox Code Playgroud)
我用这一行试图摆脱标点符号:
train$var1 <- gsub("[[:punct:]]", " ", train$var1)
Run Code Online (Sandbox Code Playgroud)
但是在运行之后的检查中,我仍然看到奇怪的单引号,'...'和黑点像密码隐藏字符.这是输入:
dput(unique(unlist(var1List))[c(30242:30246, 30561, 30484)])
c("opportunity…", "about…", "expected…", "reward…", "us…", "‘as",
"<U+25CF>")
Run Code Online (Sandbox Code Playgroud)
有什么建议摆脱这些人物?
我正在使用一些Date列并尝试清理显然不正确的日期.我用这里safe.ifelse提到的函数编写了一个函数.
这是我的玩具数据集:
df1 <- data.frame(id = 1:25
, month1 = seq(as.Date('2012-01-01'), as.Date('2014-01-01'), by = 'month' )
, month2 = seq(as.Date('2012-01-01'), as.Date('2014-01-01'), by = 'month' )
, month3 = seq(as.Date('2012-01-01'), as.Date('2014-01-01'), by = 'month' )
, letter1 = letters[1:25]
)
Run Code Online (Sandbox Code Playgroud)
这适用于单个列:
df1$month1 <- safe.ifelse(df1$month1 > as.Date('2013-10-01'), as.Date('2013-10-01'), df1$month1)
Run Code Online (Sandbox Code Playgroud)
由于我有多个列,我想使用一个函数并应用于立即处理所有Date列:
capDate <- function(x){
today1 <- Sys.Date()
safe.ifelse <- function(cond, yes, no){ class.y <- class(yes)
X <- ifelse(cond,yes,no)
class(X) <-class.y; return(X)}
x <- safe.ifelse(as.Date(x) > as.Date(today1), …Run Code Online (Sandbox Code Playgroud) 我有YYMMDDHH格式的数据,但试图获取工作日,所以我需要使用日期格式,但无法弄清楚。
这是相关数据的讨论:
structure(list(id = c(7927751403363142656, 18236986451472797696,
5654946373641778176, 14195690822403907584, 1693303484298446848,
1.1362181921561e+19, 11694645532962195456, 1221431312630614784,
1987127670789791488, 379819848497418688), hour = c(14102118L,
14102217L, 14102812L, 14102912L, 14102820L, 14102401L, 14102117L,
14102312L, 14102301L, 14102414L)), .Names = c("id", "hour"), row.names = c(3620479L,
8510796L, 29632625L, 34450879L, 31874113L, 13420799L, 3332671L,
11543560L, 9602012L, 15574701L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
当我使用时:
dat2$dow <- as.Date(substr(as.character(dat2$hour), 1,6), format = '%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
我刚拿到NA。有什么建议么?
我有一个包含NaN的数据框,我想将其转换为0.我写了一个我觉得应该工作的函数:
fix_nan <- function(x){
return(x[is.nan(x)] <- 0)
}
Run Code Online (Sandbox Code Playgroud)
然后我将它应用于数据框:
train_e <- structure(list(pack_id = structure(1:10, .Label = c("1", "2",
"4", "5", "7", "8", "9", "10", "11", "14"), class = "factor"),
item_1 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), item_2 = c(NaN,
NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN), item_3 = c(1.45225232891169,
0.613104472886409, NaN, 1.02450431651439, 0.735706794978741,
0.741937344729377, NaN, 0.83034830207343, 0.97650959186721,
0.750305594399894), item_4 = c(0.645137961373585, 0.615792803650477,
Inf, 0.752866415261568, 0.84901755126673, 0.646398200985872,
Inf, 0.786548355648346, 0.725113372622438, 0.709897990984761
), item_5 = …Run Code Online (Sandbox Code Playgroud) 在 R 中,有没有办法读取 Excel 工作簿,然后将每个工作表写入单独的 csv 文件?我查看了“xlsx”和“XLConnect”包,但找不到任何有用的东西。