gpt4 book ai didi

dataframe - 使用数据框后保持变量类型

转载 作者:行者123 更新时间:2023-12-04 00:52:18 26 4
gpt4 key购买 nike

我正在尝试使用 kproto() R 包中的函数 clustMixType在 Julia 中对混合类型数据进行聚类,但出现错误 No numeric variables in x! Try using kmodes() from package... .我的数据应该有 3 个变量:2 个连续变量和 1 个分类变量。我用过之后好像DataFrame()所有变量都变成了分类变量。有没有办法避免在使用 DataFrame() 后更改变量类型这样我就可以使用混合类型数据(连续和分类)kproto() ?

using RCall
@rlibrary clustMixType

# group 1 variables
x1=rand(Normal(0,3),10)
x2=rand(Normal(1,2),10)
x3=["1","1","2","2","0","1","1","2","2","0"]
g1=hcat(x1,x2,x3)

# group 2 variables
y1=rand(Normal(0,4),10)
y2=rand(Normal(-1,6),10)
y3=["1","1","2","1","1","2","2","0","2","0"]
g2=hcat(y1,y2,y3)

#create the data
df0=vcat(g1,g2)
df1 = DataFrame(df0)

#use R function
R"kproto($df1, 2)"

最佳答案

我对 R 包以及它期望什么样的输入一无所知,但问题可能是您如何构建数据矩阵来构建 DataFrame,而不是 DataFrame 构造函数本身。
当您连接数字列和字符串列时,Julia 将退回到元素类型 Any对于结果矩阵:

julia> g1=hcat(x1,x2,x3)
10×3 Matrix{Any}:
0.708309 -4.84767 "1"
0.566883 -0.214217 "1"
...
这意味着您的 df0矩阵是:
julia> #create the data
df0=vcat(g1,g2)
20×3 Matrix{Any}:
0.708309 -4.84767 "1"
0.566883 -0.214217 "1"
...
DataFrame构造函数只会通过这种类型信息的缺乏而不是试图推断列类型。
julia> DataFrame(df0)
20×3 DataFrame
Row │ x1 x2 x3
│ Any Any Any
─────┼───────────────────────────
1 │ 0.708309 -4.84767 1
2 │ 0.566883 -0.214217 1
...
解决此问题的一种简单方法是不将列连接成单个矩阵,而是从列构造 DataFrame:
julia> DataFrame([vcat(x1, y1), vcat(x2, y2), vcat(x3, y3)])
20×3 DataFrame
Row │ x1 x2 x3
│ Float64 Float64 String
─────┼───────────────────────────────
1 │ 0.708309 -4.84767 1
2 │ 0.566883 -0.214217 1
...
如您所见,我们现在有两个 Float64数值列 x1x2在生成的 DataFrame 中。

关于dataframe - 使用数据框后保持变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65648767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com