我有一列持续时间存储为数据帧中的字符串.我想将它们转换为适当的时间对象,可能是POSIXlt.使用此方法很容易解析大多数字符串:
> data <- data.frame(time.string = c(
+ "1 d 2 h 3 m 4 s",
+ "10 d 20 h 30 m 40 s",
+ "--"))
> data$time.span <- strptime(data$time.string, "%j d %H h %M m %S s")
> data$time.span
[1] "2012-01-01 02:03:04" "2012-01-10 20:30:40" NA
Run Code Online (Sandbox Code Playgroud)
缺少的持续时间被编码"--"并需要转换为NA- 这已经发生但应该保留.
挑战在于字符串会丢弃零值元素.因此,期望的值2012-01-01 02:00:14将是字符串"1 d 2 h 14 s".但是这个字符串NA用简单的解析器解析:
> data2 <- data.frame(time.string = c(
+ …Run Code Online (Sandbox Code Playgroud) 我有一个MongoDB集合,其文档看起来像:
{
'_id': 'doc1',
'store_A': {'apples': 50, 'oranges':20},
'store_B': {'oranges': 15}
}
{
'_id': 'doc2',
'store_A': {'oranges':10},
'store_B': {'apples': 15}
}
Run Code Online (Sandbox Code Playgroud)
我如何编写一个聚合命令来为我提供集合中所有文档中每个商店的水果总数而不包括所有允许的水果种类?
结果应如下所示:
{
'_id': 'Result',
'store_A_total': {'apples': 50, 'oranges': 30},
'store_B_total': {'apples': 15, 'oranges': 15}
}
Run Code Online (Sandbox Code Playgroud)
此查询有效,但必须明确指定所有水果类型:
db.collection.aggregate(
{'$group': {'_id': 'Result',
'store_A_apples': {'$sum': '$Store_A.apples'},
'store_A_oranges': {'$sum': '$store_A.oranges'},
'store_B_apples': {'$sum': '$store_B.apples'},
'store_B_oranges': {'$sum': '$store_B.oranges'}
}},
{'$project': {
'store_A': {'apples': '$store_A_apples','oranges': '$store_A_oranges'},
'store_B': {'apples': '$store_B_apples','oranges': '$store_B_oranges'}
}})
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来构建这些文档以促进此类查询?