60

非常に基本的な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

助言がありますか?

4

2 に答える 2

111
# 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" 
于 2012-12-14T02:08:00.210 に答える
13

私の他のコードは「整頓されている」ので、グーグル検索からここに到着したので、それが役に立つと思うかもしれない他の人のために「整頓された」方法を残します

library(dplyr)
iris %>% 
  mutate(Species = ifelse(as.character(Species) == "virginica", "newValue", as.character(Species)))

于 2020-03-15T03:02:32.507 に答える