7

.xlsx元の小数点区切り記号がドットではなくコンマである場合、数値が数値として表されるようにファイルからRにデータをインポートするにはどうすればよいですか?

私が知っている唯一のパッケージは、Excel を扱うときにreadxlfromtidyverseです。

他のソフトウェアでExcelファイルを開いて編集する必要がないソリューションを探しています(そして、インポートする何百もの列を処理できます)-それが可能であれば、すべてのExcelをエクスポートして.csv、ツールを使用してインポートします私は知っています、それはdec=議論を取ることができます。

これまでのところ、私の最善の解決策は、数値を文字としてインポートしてから変換することです。

library(dplyr)
library(stringr)

var1<- c("2,1", "3,2", "4,5")
var2<- c("1,2", "3,33", "5,55")
var3<- c("3,44", "2,2", "8,88")
df<- data.frame(cbind(var1, var2, var3))

df %>%
      mutate_at(vars(contains("var")),
                str_replace,
                pattern = ",",
                replacement = "\\.") %>%
      mutate_at(vars(contains("var")), funs(as.numeric))
4

3 に答える 3

2

これらの列が文字として読み取られている他の理由があると強く思います。おそらく、それらは恐ろしい「テキストとして保存された数値」である可能性があります。

通常の数値 (数値として格納される) の場合、個々のファイルまたはシステム全体の設定で、小数点記号としてカンマに切り替えた後readxl::read_excel、数値を適切に読み込みます。(これは私のWindowsシステムにあります。)その列または設定のセルの1つに文字を追加する場合でも、col_types="text"ピリオドをコンマではなく10進数として使用して数値を読み取りreadxl、内部に保存されたデータ・タイプ。

R にコンマを 10 進数として読み取らせる唯一の方法は、データが数値ではなくテキストとして Excel に格納されている場合です。(数字の前に のように一重引用符'1,7を付けることで、これを入力できます。) すると、セルの隅に小さな緑色の三角形が表示され、「Number Stored as Text」というポップアップ警告が表示されます。調べてみると、Excel がテキストとして保存された数値に対して計算を行うことに驚きました。これは、これを確認する有効な方法ではありません。

于 2018-01-11T17:57:36.267 に答える