0

「foo」というデータフレームがあります。

 foo <- data.frame("row1" = c(1,2,3,4,5), "row2" = c(1,2.01,3,"-","-"))

「foo」は別のプログラムから CSV ファイルとしてアップロードされたもので、2 つの列があります。1 つは数値データ型で、もう 1 つは因子データ型です。

str(foo)
'data.frame':   5 obs. of  2 variables:
$ row1: num  1 2 3 4 5
$ row2: Factor w/ 4 levels "-","1","2.01",..: 2 3 4 1 1

foo$row2 に "-" などのダッシュがあることに注意してください。これにより、この列が要素になります。data.class(foo$row2) が「数値」を返すように、ダッシュをゼロに置き換えたいと思います。アイデアは、各列のすべてのダッシュを置き換えて、R で数値分析を実行できるようにすることです。

Rでこれを行う最も簡単な方法は何ですか?

ありがとう、

4

4 に答える 4

2

Q: R で数値解析を実行できるように、各列のすべてのダッシュを置き換えるという考えです。

applyまたsapplyはと使用sub

 kk<-data.frame(apply(foo,2,function(x) as.numeric(sub("-",0,x))))
> kk
  row1 row2
1    1 1.00
2    2 2.01
3    3 3.00
4    4 0.00
5    5 0.00

> str(kk$row2)
 num [1:5] 1 2.01 3 0 0

または、使用できますsapply

kk<-data.frame(sapply(names(foo),function(x)as.numeric(sub("-",0,foo[,x]))))

更新:2番目の列だけが必要な場合は、使用する必要はありませんapply:foo$row2<- as.numeric(sub("-",0,foo[,2]))

于 2013-10-17T21:23:20.327 に答える
1

私はこれに使用ifelse()します: foo$row2 <- ifelse(foo$row2 == "-", 0, as.numeric(foo$row2))

as.character()因子から文字に変換する必要があるかもしれません

于 2013-10-17T21:17:48.947 に答える