我有一個2列的矩陣。我想boxplot每個這些列,但每個具有不同數量的條目。不同長度的向量盒圖
例如,第一列有10個條目,第二列有7個條目。第二列的剩餘3個被賦予零。
我想繪製這些並排比較的原因。
有沒有辦法告訴R boxplot整個列1,只有列2的前7條目?
我有一個2列的矩陣。我想boxplot每個這些列,但每個具有不同數量的條目。不同長度的向量盒圖
例如,第一列有10個條目,第二列有7個條目。第二列的剩餘3個被賦予零。
我想繪製這些並排比較的原因。
有沒有辦法告訴R boxplot整個列1,只有列2的前7條目?
你可以簡單地索引你要我帶你,你有一個矩陣的值,例如
## dummy version of your data
mat <- matrix(c(1:17, rep(0, 3)), ncol = 2)
## create object suitable for plotting with boxplot
## I.e. convert to melted or long format
df <- data.frame(values = mat[1:17],
vars = rep(c("Col1","Col2"), times = c(10,7)))
## draw the boxplot
boxplot(values ~ vars, data = df)
在上面你的話。如果你確實有一個數據幀,那麼你就需要
df <- data.frame(values = c(mat[,1], mat[1:7, 2]),
vars = rep(c("Col1","Col2"), times = c(10,7)))
,我以爲,在兩列中的數據是這樣的事實相媲美的值是兩列顯示分類變量,使我們分裂值(如男性和女性的身高,性別作爲分類值)。
產生的箱線圖如下所示
對於任何數量的列和任意數量,你可以做這樣的空項。
## Load data from CSV; first row contains column headers
dat <- read.csv('your-filename.csv', header = T)
## Set plot region (when set 'ylim' skip first row with headers)
plot(
1, 1,
xlim=c(1,ncol(dat)), ylim=range(dat[-1,], na.rm=T),
xaxt='n', xlab='', ylab=''
)
axis(1, labels=colnames(dat), at=1:ncol(dat))
for(i in 1:ncol(dat)) {
## Get i-th column
p <- dat[,i]
## Remove 0 values from column
p <- p[! p %in% 0]
## Instead of 0 you can use any values
## For example, you can remove 1, 2, 3
## p <- p[! p %in% c(1,2,3)]
## Draw boxplot
boxplot(p, add=T, at=i)
}
此代碼加載表形式的CSV文件,從列中刪除0值(或者你可以刪除任何其他值),並繪製所有箱圖,每列一個圖形。
認爲這有助於。
非常感謝。爲了確保我能夠正確地做到這一點,您可以將所有內容從「墊子」讀取爲「值」作爲矢量。然後用兩列創建'變量'變量,'時間'告訴'變量'前10個屬於col1,下一個7屬於col2?我說得對嗎? – user1007742
不完全;我只讀了'mat'的前17個值,但你有權休息。 –
我該如何做到3向量而不是2? – user1007742