0

私の大きなデータセットには、車の密度(因子)という名前の列があり、それらは次のようになります

"001: 0-3.8998943958"
"061:2290.611052-2391.7437"

これらを各範囲の中央値に置き換えたいと思います。約 10000 件の観測があります。私は長い道のりを試しました: "1.9499"<-sb$CAR_Density[sb$CAR_Density == "001: 0-3.8998943958"]、うまくいきませんでした。結果の値を数値にしたいので、1.9499 に "" を付けるべきではありません。

これを行うための効率的でわかりやすい方法はありますか?プログラミングが苦手なので、どなたか教えてください。

4

2 に答える 2

0

中央値をどのように定義するかはわかりませんが、次のようなことを達成しようとしていると思います:

df <- data.frame(
  a = c("001: 0-3.8998943958","061:2290.611052-2391.7437")
  )
df$a <- as.character(df$a)
for(i in 1:nrow(df))
{
df[i,"a1"] <- as.numeric(unlist(strsplit(strsplit(df$a,":")[[i]][2],"-")))[1]
df[i,"a2"] <- as.numeric(unlist(strsplit(strsplit(df$a,":")[[i]][2],"-")))[2]
}

df$amedian <- (df$a1 + df$a2)/2

出力

> df
                          a       a1          a2     amedian
1       001: 0-3.8998943958    0.000    3.899894    1.949947
2 061:2290.611052-2391.7437 2290.611 2391.743700 2341.177376
于 2013-10-31T05:21:21.960 に答える
0

私はあなたがそれを間違った方法で持っていると思います、あなたは望んでいます

sb$CAR_Density[sb$CAR_Density == "001: 0-3.8998943958"] <- 1.9499

データについてもう少し教えていただければ、一意の値をそれぞれ中央値に置き換える自動化された方法を示すことができますが、あなたの例では密度がどのように中央値に変換されるかわかりません。

于 2013-10-31T05:12:29.433 に答える