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

标签 dataframe julia cluster-analysis

我正在尝试使用 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/

相关文章:

python - 如何在Python 3.7中读取时间序列数据

arrays - 如何在 Julia 中将向量转换为向量的向量

python - 给定坐标,如何获得 K 个最远的点?

r - 集群中最具代表性的实例

python - 将 lambda 与 pandas 结合使用以现有列为条件计算新列

pandas - 使用 Pandas 计算数据透视表中的 boolean 值

julia - 在 Julia "ERROR The following package names could not be resolved"中添加包

python - 查找包含给定单词的最多提及次数的 HTML 元素

python - pandas 如何使用 Series 对象对数据框进行切片?

julia - 有关 Windows 上 Julia 的几个基本问​​题