date - 朱莉娅@Subset 日期
问题描述
这应该很容易,但我找不到任何文档或之前的问答。使用 Julia 进行子集化很容易,尤其是使用 @Chain 命令。但是我这辈子还没有想出一种方法来对日期进行子集化:
maindf = @chain rawdf begin
@subset(Dates.year(:travel_date) .== 2019)
end
在所有文档中 Dates.year(today()) 应该产生 (2021) 但这最终给我一个错误:
ERROR: MethodError: no method matching +(::Vector{Date}, ::Int64)
Closest candidates are:
+(::Any, ::Any, ::Any, ::Any...) at operators.jl:560
+(::T, ::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8} at int.jl:87
+(::T, ::Integer) where T<:AbstractChar at char.jl:223
不确定为什么我会收到方法错误..
在使用 DPLYR 的 R 中,这只是:
maindf = rawdf %>%
filter(., year(travel_date) == 2019)
有任何想法吗?
解决方案
采用:
julia> using DataFramesMeta, Dates
julia> df = DataFrame(travel_date=repeat([Date(2019,1,1), Date(2020,1,1)],3), id=1:6)
6×2 DataFrame
Row │ travel_date id
│ Date Int64
─────┼────────────────────
1 │ 2019-01-01 1
2 │ 2020-01-01 2
3 │ 2019-01-01 3
4 │ 2020-01-01 4
5 │ 2019-01-01 5
6 │ 2020-01-01 6
julia> @rsubset(df, year(:travel_date) == 2019)
3×2 DataFrame
Row │ travel_date id
│ Date Int64
─────┼────────────────────
1 │ 2019-01-01 1
2 │ 2019-01-01 3
3 │ 2019-01-01 5
julia> @subset(df, year.(:travel_date) .== 2019)
3×2 DataFrame
Row │ travel_date id
│ Date Int64
─────┼────────────────────
1 │ 2019-01-01 1
2 │ 2019-01-01 3
3 │ 2019-01-01 5
不同之处在于@rsubset
按行@subset
工作并在整列上工作。
你的问题是Dates.year(:travel_date) .== 2019)
你混合了函数的非广播调用year
和广播比较.== 2019
。您始终需要确保您是按行工作(@rsubset
在这种情况下使用)或在整个列上工作(使用@subset
)。
不同的场景可能需要不同的方法。以下是全列方法有用的示例:
julia> using Statistics
julia> @subset(df, :id .> mean(:id))
3×2 DataFrame
Row │ travel_date id
│ Date Int64
─────┼────────────────────
1 │ 2020-01-01 4
2 │ 2019-01-01 5
3 │ 2020-01-01 6
您要mean
在整个列上进行操作的位置。
编辑
这与以下内容相同@chain
:
julia> @chain df begin
@subset year.(:travel_date) .== 2019
end
3×2 DataFrame
Row │ travel_date id
│ Date Int64
─────┼────────────────────
1 │ 2019-01-01 1
2 │ 2019-01-01 3
3 │ 2019-01-01 5
推荐阅读
- excel - 在线教程之后的 VBA 中出现“如果没有结束则阻止”错误
- python - Django:将数据添加到 JWT 有效负载
- python - Python Keras模型输入与层不兼容
- c# - postgres npgsql 如何使整数数组正常工作
- apollo - Apollo Federation 上的两个微服务之间的突变
- python - 让用户猜测存储的单词(字符串)直到他们猜对的代码
- graphql - Apollo federation 可以 2 个服务为相同的方法返回不同的模型
- kubernetes - Kubernetes Podspec 仅下载容器映像,但不应安装
- spring-boot - 使用 null id 保存实体 JPA
- javascript - react-query中如何使用useMutation的响应来显示数据?