0 r
我将数据框拆分为X和Y.X有一栏,Y有一个100.
x <- subset(tbl, , select = ordernum)
y <- subset(tbl, select = -c(ordernum, paid1num,
weight, returnnum, order_only, multi_dep, sequence_id))
Run Code Online (Sandbox Code Playgroud)
下一个I相关X与每一列中Y产生一个frame与100 columns和a single row.
corr <- cor(x,y)
Run Code Online (Sandbox Code Playgroud)
接下来我换位,
corr.t <- t(corr)
Run Code Online (Sandbox Code Playgroud)
并且(截断的)结果如下所示:
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
Run Code Online (Sandbox Code Playgroud)
我想把这个叫做的单列ordernum分成2列.阿character与变量名字段,以及numeric与所述相关性.
我感谢任何指导.也许如果我使用lm,而不是cor?
您存储的输出corr.t是a matrix,您提到的"变量名称"是矩阵的行名称,可以使用rownames().
要获得所需的输出,您可以:
data.frame(id = rownames(corr.t), val = c(t(corr.t)))
Run Code Online (Sandbox Code Playgroud)
更通用的解决方案 - 当您的矩阵不仅仅是一列时适用 - 将是:
data.frame(ID = rownames(your-matrix),
as.data.frame(your-matrix,
row.names = 1:nrow(your-matrix)))
Run Code Online (Sandbox Code Playgroud)
最后一行,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
Run Code Online (Sandbox Code Playgroud)