0

我将数据框拆分为XYX有一列,Y大约100.

x <- subset(tbl, , select = ordernum)
y <- subset(tbl, select = -c(ordernum, paid1num, 
          weight, returnnum, order_only, multi_dep, sequence_id))

接下来,我与产生Xwith和的每一列相关联。Yframe100 columnsa single row

corr <- cor(x,y)

接下来我转置,

corr.t <- t(corr)

并且(截断的)结果如下所示:

                                   ordernum
HH_AFFORD_MOMS_BUY_GREEN      -0.0021281583
HH_AFFORD_SPORTS              -0.0047221159
HH_AFFORD_CLASSICAL_MUSIC     -0.0006594956
HH_AFFORD_HOME_DECOR           0.0052106766

我想将这个名为ordernum的单列拆分为 2 列。character具有变量名称的字段和numeric具有相关性的字段。

我很感激任何指导。也许如果我使用lm, 而不是cor?

4

1 回答 1

5

您存储为的输出corr.t是 a matrix,您提到的“变量名”是矩阵的名,可以使用rownames().

要获得所需的输出,您只需执行以下操作:

data.frame(id = rownames(corr.t), val = c(t(corr.t)))

一个更通用的解决方案 - 当您的矩阵不仅仅是一列时适用 - 将是:

data.frame(ID = rownames(your-matrix), 
           as.data.frame(your-matrix, 
                         row.names = 1:nrow(your-matrix)))

最后一行,row.names = 1:nrow(your-matrix),从输出中删除行名;它们不再需要,因为它们现在是您的数据框的一部分。


对于它的价值,您实际上并不需要专门转置您的数据来获得您想要的输出。这是一个示例,其中包含 R 可用的数据集之一,演示了您要实现的目标:

(mycor <- cor(swiss[, 1], swiss[, 2:5]))
#      Agriculture Examination  Education  Catholic
# [1,]   0.3530792  -0.6458827 -0.6637889 0.4636847

# Now, make it into a data.frame
data.frame(id = colnames(mycor), val = as.vector(mycor))
#            id        val
# 1 Agriculture  0.3530792
# 2 Examination -0.6458827
# 3   Education -0.6637889
# 4    Catholic  0.4636847
于 2013-02-06T16:47:39.817 回答