Ns

rで複数の列を文字形式から数値形式に変換する



Converting Multiple Columns From Character Numeric Format R



解決:

あなたは試すことができます

DF<- data.frame('a' = as.character(0:5), 'b' = paste(0:5, '.1', sep = ''), 'c' = letters[1:6], stringsAsFactors = FALSE) # Check columns classes sapply(DF, class) # a b c # 'character' 'character' 'character' cols.num <- c('a','b') DF[cols.num] <- sapply(DF[cols.num],as.numeric) sapply(DF, class) # a b c # 'numeric' 'numeric' 'character'   

すでにtidyverseを使用している場合は、正確な状況に応じていくつかの解決策があります。



それがすべての数字であり、NAがないことがわかっている場合は基本

library(dplyr)#ソリューションデータセット%>%mutate_if(is.character、as.numeric)

テストケース



df%str()

すべての文字ベクトルを数値に変換します(数値でない場合は失敗する可能性があります)

df%>%select(-x3)%>%#これにより、すべての文字列を数値に変換する必要がある場合にアルファ列が削除されますmutate_if(is.character、as.numeric)%>%str()

各列を変換できるかどうかを確認します。これは無名関数にすることができます。戻りますどこかに非数値または非NA文字がある場合はFALSE。また、因子を無視するのが文字ベクトルであるかどうかもチェックします。 na.omitは、「不良」NAを作成する前に元のNAを削除します。

is_all_numeric%mutate_if(is_all_numeric、as.numeric)%>%str()

特定の名前付き列を変換する場合は、mutate_atの方が適しています。



df%>%mutate_at( 'x1'、as.numeric)%>%str() 

列のインデックスを使用できます。data_set [、1:9]<- sapply(dataset[,1:9],as.character)