-1

私は次のdata.frameを持っています

df<-data.frame(x=c("A","B","C"),colour=c(0.3,0.6,0.9))

  x colour
1 A    0.3
2 B    0.6
3 C    0.9

df [、"colour"]の数字を次のような色に置き換えたい

< 0.4 = colour 1 
0.4 - 0.7 = colour 2 
< 0.7= colour 3

次の置換スキームを試しましたが、前の色の割り当てが後者に置き換えられています。何かアドバイス?

library(RColorBrewer)

g<-brewer.pal(3,"Greens")

col1<-df[,"colour"] < 0.4
df[col1,"colour"]<-g[1]
col2<-df[,"colour"] < 0.7
df[col2,"colour"]<-g[2]
col3<-df[,"colour"] >= 0.7
df[col3,"colour"]<-g[3]

アドバイスありがとうございます。

解決策seancarmody(そして有用なコメントをくれた宇宙飛行士)に感謝します

v<-c(0.45,0.65,0.75,0.85,0.95)
breaks<-c(0.4,0.5,0.6,0.7,0.8,0.9)

#Create a colour for each section
cols<-brewer.pal(length(breaks)+1,"Greens")
#Replace the gsim values with colours using the breaks
v <- as.character(cut(v, c(-Inf, breaks, Inf),labels=cols))

 > v
[1] "#C7E9C0" "#74C476" "#41AB5D" "#238B45" "#005A32"
4

1 に答える 1

2

順序を変更すると、アプローチが機能します。

col2<-df[,"colour"] < 0.7
df[col2,"colour"]<-g[2]
col1<-df[,"colour"] < 0.4
df[col1,"colour"]<-g[1]

0.4未満のすべても0.7未満であるため、あなたのアプローチはcol1を上書きすることでした。元の質問を編集したため、上記は古くなっています。ここでは、より一般的なアプローチを使用します。

breaks <- c(0.4, 0.7)  # you can add more cut points here
cols <- brewer.pal(length(breaks) + 1, "Greens")
df$colour <- as.character(cut(df$colour, c(-Inf, breaks, Inf), labels=cols))
于 2012-08-25T07:23:50.740 に答える