在 R 中绘制不同大小的独立数据集
Plotting independent data sets of different size in R
我想读取 3 个独立的数据集,每个数据集都有不同的大小,并使用箱线图绘制它们,例如:
Set1 Set2 Set3
1 1 1
1 2 2
1 2 2
3 3
3 3
4
(作为字符串:"Set1 Set2 Set3\n1 1 1\n1 2 2\n1 2 2\n 3 3\n 3 3\n 4\n"
)
但是,列宽可能会有所不同,例如当一个值超过 5 位时。
当我这样做时 results = read.table("data.dat", header=TRUE)
RStudio 将报告:
line 4 did not have 3 elements
使用选项 fill=TRUE
会将第 4 行中的每个字段向左移动,并用 NA
填充右侧的空字段,这会直接影响数据。
由于列大小可能不同,我尝试将其加载为 CSV 文件,但这导致 Set1
的中位数变为 NA
。
与 CSV 相同的数据:
Set1,Set2,Set3
1,1,1
1,2,2
1,2,2
,3,3
,3,3
,,4
那么,如何在 R 不更改数据的情况下在单个图表中绘制所有集合?
EDIT1: 提供了所用数据格式的更多详细信息。我还强调列的大小可能会有所不同,并且不会像示例中那样固定
这将读取具有指定字段宽度的指定文件。跳过第一行(header 行)并使用指定的列名。空字段 (na.strings=""
) 被视为 NA
:
results <- read.fwf("data.dat", widths = c(5L, 5L, 5L), skip = 1,
na.strings = "", col.names = c("Set1", "Set2", "Set3"))
boxplot(results)
(图片后续)
注意: 无法从问题中分辨出 data.dat 的确切内容,这可能是至关重要的,但出于此答案的目的,我们假设:
Lines <- c("Set1 Set2 Set3",
"1 1 1",
"1 2 2",
"1 2 2",
" 3 3",
" 3 3",
" 4")
writeLines(Lines, "data.dat")
我想读取 3 个独立的数据集,每个数据集都有不同的大小,并使用箱线图绘制它们,例如:
Set1 Set2 Set3
1 1 1
1 2 2
1 2 2
3 3
3 3
4
(作为字符串:"Set1 Set2 Set3\n1 1 1\n1 2 2\n1 2 2\n 3 3\n 3 3\n 4\n"
)
但是,列宽可能会有所不同,例如当一个值超过 5 位时。
当我这样做时 results = read.table("data.dat", header=TRUE)
RStudio 将报告:
line 4 did not have 3 elements
使用选项 fill=TRUE
会将第 4 行中的每个字段向左移动,并用 NA
填充右侧的空字段,这会直接影响数据。
由于列大小可能不同,我尝试将其加载为 CSV 文件,但这导致 Set1
的中位数变为 NA
。
与 CSV 相同的数据:
Set1,Set2,Set3
1,1,1
1,2,2
1,2,2
,3,3
,3,3
,,4
那么,如何在 R 不更改数据的情况下在单个图表中绘制所有集合?
EDIT1: 提供了所用数据格式的更多详细信息。我还强调列的大小可能会有所不同,并且不会像示例中那样固定
这将读取具有指定字段宽度的指定文件。跳过第一行(header 行)并使用指定的列名。空字段 (na.strings=""
) 被视为 NA
:
results <- read.fwf("data.dat", widths = c(5L, 5L, 5L), skip = 1,
na.strings = "", col.names = c("Set1", "Set2", "Set3"))
boxplot(results)
(图片后续)
注意: 无法从问题中分辨出 data.dat 的确切内容,这可能是至关重要的,但出于此答案的目的,我们假设:
Lines <- c("Set1 Set2 Set3",
"1 1 1",
"1 2 2",
"1 2 2",
" 3 3",
" 3 3",
" 4")
writeLines(Lines, "data.dat")