R:茎叶图问题
我有以下向量:R:茎叶图问题,r,plot,R,Plot,我有以下向量: x <- c(54.11, 58.09, 60.82, 86.59, 89.92, 91.61, 95.03, 95.03, 96.77, 98.52, 100.29, 102.07, 102.07, 107.51, 113.10, 130.70, 130.70, 138.93, 147.41, 149.57, 153.94, 158.37, 165.13, 201.06, 208.67, 235.06, 240.53
x <- c(54.11, 58.09, 60.82, 86.59, 89.92, 91.61,
95.03, 95.03, 96.77, 98.52, 100.29, 102.07,
102.07, 107.51, 113.10, 130.70, 130.70, 138.93,
147.41, 149.57, 153.94, 158.37, 165.13, 201.06,
208.67, 235.06, 240.53, 251.65,254.47, 254.47, 333.29)
但是,当我在R中尝试stem()函数时,我得到了如下结果:
> stem(x)
The decimal point is 2 digit(s) to the right of the |
0 | 566999
1 | 000000011334
1 | 55567
2 | 0144
2 | 555
3 | 3
> stem(x, scale = 2)
The decimal point is 1 digit(s) to the right of the |
4 | 48
6 | 1
8 | 7025579
10 | 02283
12 | 119
14 | 7048
16 | 5
18 |
20 | 19
22 | 5
24 | 1244
26 |
28 |
30 |
32 | 3
问题:我在stem()函数中是否缺少一个参数?如果没有,还有其他解决方案吗?我相信你想要的是一点非标准:茎和叶的左边应该有等间距的数字/数字,而你要求的是不规则间距的。我理解你的沮丧,54和58被分为40组,但茎叶图实际上只是一个水平直方图的文本表示,侧面的数字反映了通常在已知数据之外开始/结束的“箱子”。将
scale(x,scale=2)
左刻度数字想象为40-59、60-79等
你可能已经试过了,但是
stem(x, scale=3)
# The decimal point is 1 digit(s) to the right of the |
# 5 | 48
# 6 | 1
# 7 |
# 8 | 7
# 9 | 025579
# 10 | 0228
# 11 | 3
# 12 |
# 13 | 119
# 14 | 7
# 15 | 048
# 16 | 5
# 17 |
# 18 |
# 19 |
# 20 | 19
# 21 |
# 22 |
# 23 | 5
# 24 | 1
# 25 | 244
# 26 |
# 27 |
# 28 |
# 29 |
# 30 |
# 31 |
# 32 |
# 33 | 3
这是一个良好的开端,而且“适当”是因为垃圾箱的大小相同
如果您必须删除空行(对我来说,这些空行仍然具有统计意义、相关性、信息性等),那么由于stem
的默认值是打印到控制台,因此您需要捕获控制台输出(在rmarkdown文档中可能有问题),过滤掉空行,然后将它们重新发送到控制台
cat(Filter(function(s) grepl("decimal|\\|.*[0-9]", s),
capture.output(stem(x, scale=3))),
sep="\n")
# The decimal point is 1 digit(s) to the right of the |
# 5 | 48
# 6 | 1
# 8 | 7
# 9 | 025579
# 10 | 0228
# 11 | 3
# 13 | 119
# 14 | 7
# 15 | 048
# 16 | 5
# 20 | 19
# 23 | 5
# 24 | 1
# 25 | 244
# 33 | 3
(我的grepl
regex可能会得到改进,以处理类似于“如果有管道,那么它后面必须跟一个或多个数字”的内容,但我认为这就足够了。)
有一些不平等,你想要
6 | 0
,但是你的60.82四舍五入到61(因此是“1”)。如果您确实希望60.82成为6 | 0
,请使用stem(trunc(x),scale=3)将其截断。这并不准确,但我猜这是因为您的样本输出是手动干扰的。我相信您想要的是有点不标准:茎和叶的左侧应该有等间距的数字/数字,而您要求的是不规则间距的。我理解你的沮丧,54和58被分为40组,但茎叶图实际上只是一个水平直方图的文本表示,侧面的数字反映了通常在已知数据之外开始/结束的“箱子”。将scale(x,scale=2)
左刻度数字想象为40-59、60-79等
你可能已经试过了,但是
stem(x, scale=3)
# The decimal point is 1 digit(s) to the right of the |
# 5 | 48
# 6 | 1
# 7 |
# 8 | 7
# 9 | 025579
# 10 | 0228
# 11 | 3
# 12 |
# 13 | 119
# 14 | 7
# 15 | 048
# 16 | 5
# 17 |
# 18 |
# 19 |
# 20 | 19
# 21 |
# 22 |
# 23 | 5
# 24 | 1
# 25 | 244
# 26 |
# 27 |
# 28 |
# 29 |
# 30 |
# 31 |
# 32 |
# 33 | 3
这是一个良好的开端,而且“适当”是因为垃圾箱的大小相同
如果您必须删除空行(对我来说,这些空行仍然具有统计意义、相关性、信息性等),那么由于stem
的默认值是打印到控制台,因此您需要捕获控制台输出(在rmarkdown文档中可能有问题),过滤掉空行,然后将它们重新发送到控制台
cat(Filter(function(s) grepl("decimal|\\|.*[0-9]", s),
capture.output(stem(x, scale=3))),
sep="\n")
# The decimal point is 1 digit(s) to the right of the |
# 5 | 48
# 6 | 1
# 8 | 7
# 9 | 025579
# 10 | 0228
# 11 | 3
# 13 | 119
# 14 | 7
# 15 | 048
# 16 | 5
# 20 | 19
# 23 | 5
# 24 | 1
# 25 | 244
# 33 | 3
(我的grepl
regex可能会得到改进,以处理类似于“如果有管道,那么它后面必须跟一个或多个数字”的内容,但我认为这就足够了。)
有一些不平等,你想要6 | 0
,但是你的60.82四舍五入到61(因此是“1”)。如果您确实希望60.82成为6 | 0
,请使用stem(trunc(x),scale=3)将其截断。这并不准确,但我猜这是因为您的样本输出是手动干扰的