我有两个制表符分隔的文件;一个包含数据,第二个包含我感兴趣的列的名称。我想对数据框进行子集,以便仅包含我感兴趣的列。这是我的代码:
dat1 = DataFrame(CSV.File("data.txt"))
hdr = Symbol(readdlm("header.txt",'\t'))
这使
julia> dat1
4×5 DataFrame
│ Row │ chr │ pos │ alt │ ref │ cadd │
│ │ String │ Int64 │ String │ String │ Float64 │
├─────┼────────┼───────┼────────┼────────┼─────────┤
│ 1 │ chr1 │ 1234 │ A │ T │ 23.4 │
│ 2 │ chr2 │ 1234 │ C │ G │ 5.4 │
│ 3 │ chr2 │ 1234 │ G │ C │ 11.0 │
│ 4 │ chr5 │ 3216 │ A │ T │ 3.0 │
julia> hdr
Symbol("Any[\"pos\" \"alt\"]")
但是,如果尝试使用以下方法进行子集处理,则会出现错误:
julia> dat2 = dat1[ :, :hdr]
子集的正确方法是什么?谢谢!
做就是了:
hdr = vec(readdlm("header.txt",'\t'))
dat2 = dat1[:, hdr]
或第二步
dat2 = select(df1, hdr)
这里重要的是帽子hdr
应该是字符串的向量。
您也可能写过:
dat2 = select(df1, readdlm("header.txt",'\t')...)
将矩阵的内容(包含列名的字符串)作为位置参数展开。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句