【发布时间】:2019-11-05 14:27:35
【问题描述】:
我有一个数据集,其中包含 6 个变量的 120 个观察值。五个变量是因素,1个变量是我的目标变量。 我需要编写一个函数来创建一个矩阵(对于每个因子),其中包含因子的每个级别作为列,目标变量的最大值作为第一行,目标变量的最小值作为第二行.
我知道如何创建矩阵,但是当我需要通过函数创建矩阵时我会迷路。 有人可以帮忙吗?
这是一个简单的例子,说明我想用一个虚构的简单数据集达到什么目的。 Example
如您所见,对于因子的每个级别(图片上的因子1),我想指示目标的最高值,以及目标的最低值。
这是我自己数据的一个子集:
> dput(data_plu[1:4, ])
structure(list(NaNO3 = structure(c(2L, 8L, 8L, 3L), .Label = c("10",
"14", "18", "2", "22", "26", "30", "6"), class = "factor"),
CaCl2 = structure(c(4L,
8L, 8L, 8L), .Label = c("0.1", "0.28", "0.46", "0.64", "0.82",
"1", "1.19", "1.37"), class = "factor"), PO4 = structure(c(1L,
5L, 5L, 6L), .Label = c("0.1", "0.8", "1.5", "2.2", "2.9", "3.6",
"4.3", "5"), class = "factor"), NH4Cl = structure(c(5L, 3L, 3L,
6L), .Label = c("0.5", "10.86", "12.93", "15", "2.58", "4.65",
"6.72", "8.79"), class = "factor"), MgSO4 = structure(c(4L, 7L,
1L, 7L), .Label = c("0.21", "0.35", "0.5", "0.64", "0.79", "0.93",
"1.08", "1.22"), class = "factor"), DC = c(15000L, 707500L, 720000L,
872500L)), row.names = c(NA, 4L), class = "data.frame")
【问题讨论】:
-
请分享一点样本数据。我认为
model.matrix函数可以让你大部分时间到达那里---see this question or others about one-hot encoding---但是当你谈到想要两行时,我有点困惑,一个是最大值,一个是最小值。你不是有 120 个观察值吗? -
对不起,如果我的问题不清楚。我在我的问题中添加了一张图片,以通过一个更简单的示例来说明我的意思。
-
嗨莎拉,最好不是图片。你提到你现在知道创建一个矩阵,如果你用它来创建你的数据的一个小例子,是否有可能?
-
啊 - 无视我的 cmets 关于
model.matrix和 one-hot 编码,我完全误解了。请see the FAQ 提供可重现的示例。dput()是一个很好的函数来创建数据的复制/粘贴版本,例如dput(your_data[1:4, ])将给我们您数据的前 4 行。 -
我在我的问题中添加了一部分数据:)