我想阅读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:为使用的数据格式提供更多详细信息。我还要强调,列大小可能会有所不同,而不是在示例
中固定答案 0 :(得分:1)
这将使用指定的字段宽度读取指示的文件。跳过第一个(标题行)并使用指示的列名称。空字段(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")