web-dev-qa-db-ja.com

Rの条件を使用して列の値を置き換える

非常に基本的なR質問がありますが、正しい答えを得るのに苦労しています。次のようなデータフレームがあります。

 ind<-rep(1:4,each=24)
 hour<-rep(seq(0,23,by=1),4)
 depth<-runif(length(ind),1,50)

 df<-data.frame(cbind(species,ind,hour,depth))
 df$depth<-as.numeric(df$depth)

選択して、depth < 10(たとえば)のすべての行をゼロに置き換えますが、それらの行に関連付けられているすべての情報とデータフレームの元の次元を保持します。

私は以下を試してみましたが、これは機能しません。

df[df$depth<10]<-0

助言がありますか?

44
user1626688
# reassign depth values under 10 to zero
df$depth[df$depth<10] <- 0

(因子である列には、因子レベルである値のみを割り当てることができます。現在因子レベルではない値を割り当てる場合は、最初に追加レベルを作成する必要があります。

levels(df$species) <- c(levels(df$species), "unknown") 
df$species[df$depth<10]  <- "unknown" 
82
MattBagg