1

我正在尝试构建一个数据表,然后可以将其用于进一步分析(例如,生成箱线图)。

我得到的数据如下所示(注意各种测量次数):

measurement_option, measurement
option1, 11.3
option1, 12.7,
option2, 19.3,
option2, 9.7
option2, 12.1

我想做的是得到这个

option1, 11.3, 12.7
option2, 19.3, 9.7, 12.1

我见过人们使用reshape(尽管为此我需要一个时间变量,对吗?)和cast,但老实说,我无法让这两个命令生成如上所示的列表。

4

3 回答 3

3

您不需要为使用 ggplot 的箱线图做更多的事情。

ggplot(data = df, aes(x = measurement_option, y = measurement)) + 
geom_boxplot()

应该做你想做的。有关详细信息,请参阅ggplot 手册

于 2013-07-09T16:03:04.203 回答
2

正如@LostBrit 正确指出的那样,您的数据已经处于最佳绘图格式。例如,假设您data.frame的名称为“mydf”,您可以简单地执行以下操作:

boxplot(measurement ~ measurement_option, mydf)

如果您真的想要您显示的格式的数据(但是,我不知道您将如何轻松地进行进一步的绘图),那么您实际上应该查看的函数是aggregate. 假设你data.frame被称为“mydf”,你可以as.vector用作聚合函数:

> aggregate(measurement ~ measurement_option, mydf, as.vector)
  measurement_option     measurement
1            option1      11.3, 12.7
2            option2 19.3, 9.7, 12.1

但是请注意,“测量”现在是list.

于 2013-07-09T16:08:01.323 回答
0
library(data.table)
dt = fread('measurement_option,measurement
option1,11.3
option1,12.7
option2,19.3
option2,9.7
option2,12.1')

# or
# dt = data.table(your_data_frame)

dt[, list(list(measurement)), by = measurement_option]
#   measurement_option            V1
#1:            option1     11.3,12.7
#2:            option2 19.3,9.7,12.1
于 2013-07-09T16:09:31.793 回答