0

いくつかの特性のそれぞれについてデータを持つサンプルの数をプロットしようとしています。実際には、これらのサンプル数を含むデータの列が既にあり、それを「頻度」としてプロットすることを望んでいました。現状では、頻度データがどこから来ているのかよくわかりません (以下のコードを参照)。何か明確にできるかどうか教えてください。どうもありがとう!:

##my data
data<-structure(list(V1 = structure(c(2L, 1L), .Label = c("593", "QnWeight_initial"
), class = "factor"), V2 = structure(c(2L, 1L), .Label = c("566", 
"Head"), class = "factor"), V3 = structure(c(2L, 1L), .Label = c("535", 
"V1"), class = "factor"), V4 = structure(c(2L, 1L), .Label = c("535", 
"V2"), class = "factor"), V5 = structure(c(2L, 1L), .Label = c("535", 
"V3"), class = "factor"), V6 = structure(c(2L, 1L), .Label = c("482", 
"Left_Leg"), class = "factor"), V7 = structure(c(2L, 1L), .Label = c("474", 
"Left_Antenna"), class = "factor"), V8 = structure(c(2L, 1L), .Label = c("237", 
"Qn_Weight_Loss"), class = "factor"), V9 = structure(c(2L, 1L
), .Label = c("230", "Days_wrkr_eclosion"), class = "factor"), 
    V10 = structure(c(2L, 1L), .Label = c("81", "Growth_all"), class = "factor"), 
    V11 = structure(c(2L, 1L), .Label = c("79", "Growth_1_2"), class = "factor"), 
    V12 = structure(c(2L, 1L), .Label = c("62", "Growth_1_3"), class = "factor"), 
    V13 = structure(c(2L, 1L), .Label = c("60", "Growth_2_3"), class = "factor"), 
    V14 = structure(c(2L, 1L), .Label = c("51", "Right_Antenna"
    ), class = "factor"), V15 = structure(c(2L, 1L), .Label = c("49", 
    "Left_Leg_Remeasure"), class = "factor"), V16 = structure(c(2L, 
    1L), .Label = c("49", "Right_Leg"), class = "factor"), V17 = structure(c(2L, 
    1L), .Label = c("47", "Head_Remeasure"), class = "factor"), 
    V18 = structure(c(2L, 1L), .Label = c("46", "Left_Antenna_Remeasure"
    ), class = "factor")), .Names = c("V1", "V2", "V3", "V4", 
"V5", "V6", "V7", "V8", "V9", "V10", "V11", "V12", "V13", "V14", 
"V15", "V16", "V17", "V18"), class = "data.frame", row.names = c(NA, 
-2L))
dat<-data.frame(fac=unlist(data[1,, drop=FALSE]), freqs=unlist(data[2,, drop=FALSE]))
t<-table(rep(as.character(dat[, 1]), dat[, 2]))

##the plot I'm making at the moment
barplot(t, main="Sample Sizes of Various Fitness Traits", xaxt='n', xlab='', width=0.85)
labels<-unlist(data[1,,drop=FALSE])
text(1:18, par("usr")[3] -0.25, srt=90, adj=1,labels=labels,xpd=TRUE, cex=0.6)


##The kind of plot I'm looking to make
par(las=2) # make label text perpendicular to axis
par(mar=c(5,8,4,2)) # increase y-axis margin.

print(mtcars$gear)
counts <- table(mtcars$gear)
print(counts)
barplot(counts, main="Car Distribution", names.arg=c("3 Gears", "4 Gears", "5   Gears"), cex.names=0.8)
4

2 に答える 2

2

それは明らかに賢明なプロットになります。y 軸に「頻度」というラベルを付ける方法を尋ねているようです。

barplot( t, main="Sample Sizes of Various Fitness Traits", 
            xaxt='n', xlab='', width=0.85, ylab="Frequency")
labels<-unlist(data[1,,drop=FALSE])
text(1:18, par("usr")[3] -0.25, srt=90, adj=1,labels=labels,xpd=TRUE, cex=0.6)

または::: コードが何をするのかを尋ねたのは、他の誰かからコピーしたもので、本当に理解していないからですか? tableオブジェクト「t」を作成する関数は、一意のカテゴリ内のアイテムの数をカウントします。このフレーズrep(as.character(dat[, 1]), dat[, 2]))は少しあいまいですが、V2 の各値を、V2 の係数表現の数値コーディングと同じ回数繰り返していますdat

それとも、データが適切な方法で表現されているかどうかを尋ねていますか? (そうではありません。)因数分解された変数が誤って数値として作成された場合に、その変数を数値に変換する方法に関する R-FAQ があります。

 barplot( as.numeric( as.character(dat$freqs)) , 
    main="Sample Sizes of Various Fitness Traits", 
    xaxt='n', xlab='', width=0.85, ylab="Frequency")
 labels<-unlist(data[1,,drop=FALSE])
 text(1:18, par("usr")[3] -0.25, srt=90, adj=1,labels=labels,xpd=TRUE, cex=0.6)
于 2012-09-18T04:12:17.660 に答える
1

これは、データ オブジェクトから有用なデータを抽出する試みです。(問題は、データ列がすべて、ヘッダー行がデータの最初の行である必要があるということです。これは、次を使用して修正できるはずです。 read.table(...,header=T)

# converting from factor to character or numeric as required
measure  <- unlist(lapply(data[1,], as.character))
value <- unlist(lapply(data[2,], function(i){as.numeric(as.character(i))}))

# set names appropriately
names(value) <- measure


# the plot
par(las=2) # make label text perpendicular to axis
par(mar=c(5,8,4,2)) # increase y-axis margin.
barplot(value)

ここに画像の説明を入力

于 2012-09-18T04:12:59.160 に答える