1

数値の列を数値に変換したいのですが、「新規」および「終了」と表示されている特定のセルがあり、それらを文字として保持したいと思います。

を使用するas.numeric(df$col1)と、数値は数値に変換されますが、単語は「NA」値に強制変換されます。

この強制を防ぎながら、すべての数値を数値に変換する方法はありますか?

4

2 に答える 2

6

ベクトルには単一の型しか含めることができないため、ベクトルでそれを行うことはできません。ただし、リストを使用してそれを行うことはできます。

Data <- data.frame(col1=c("1","2","New","3","Gone"), stringsAsFactors=FALSE)
List <- lapply(as.list(Data$col1), type.convert, as.is=TRUE)
于 2012-06-11T20:41:07.380 に答える
1

data.frameの列は、常にすべて同じタイプになります。したがって、同じ列に文字列「New」と数字5を含めることはできません。

ただし、途中であなたを連れて行くための例:

x <- c('New', 1, 'Gone', 2)

ifelse(is.na(as.numeric(x)), x, as.numeric(x))

何をしているかに応じて、これを拡張して特定のケースに適用することができます。

Joshuaのコメントによると、ifelseステートメントで関数を使用できます。

ifelse(is.na(as.numeric(x)), sprintf('its a string %s', x), sprintf('its a number %f', as.numeric(x)))

ただし、この状況に対処するための通常の手法は、ジョシュアが回答で概説したとおりです。

于 2012-06-11T20:39:41.607 に答える