r语言 - 如何将数据帧从字符转换为数字



我知道这个问题可能会重复,但我尝试了所有的解决方案:

如何将整个数据帧转换为数字,同时保留小数?

https://statisticsglobe.com/convert-data-frame-column-to-numeric-in-r

但不工作

我手动从电脑导入excel数据:

文件比;导入数据>Excel和我设置数据类型为数值

i check my data using

View(Old_data) 

,对于数值类型

为真
head(Old_data)
QC_G.F9_01_4768   QC_G.F9_01_4765
M95T834        70027.02          69578.19   
M97T834        95774.14          81479.30
M105T541       75686.39          68455.65
M109T834       72093.07          70942.65
M111T834_2     77502.98          77527.54
M114T834       68132.06          70296.73
M121T834       52233.05          56074.64
M125T834       44559.99          35831.79
M128T834       59257.48          59574.73
M135T834       105136.55         105274.98

将行转换为列,将列转换为行
New_data <- as.data.frame(t(Old_data))

当我检查我的新数据使用:

View(New_data)

我发现我的列是字符类型而不是数字

我尝试将New_data转换为数字

New_data_B -> as.numeric(New_data)

i check my data using

dim(New_data_B)
17 1091

这是我的数据的例子

New_data_B

#>                     Name    MT95T843     MT95T756
#> 1        QC_G.F9_01_4768 70027.02132  95774.13597
#> 2        QC_G.F9_01_4765 69578.18634  81479.29575
#> 3        QC_G.F9_01_4762 69578.18634  87021.95427
#> 4        QC_G.F9_01_4759 68231.14338  95558.76738
#> 5        QC_G.F9_01_4756 64874.12936  96780.77245
#> 6        QC_G.F9_01_4753 63866.65780  91854.35304
#> 7  CtrF01R5_G.D1_01_4757 66954.38799 128861.36163
#> 8  CtrF01R4_G.D5_01_4763 97352.55229 101353.25927
#> 9  CtrF01R3_G.C8_01_4754 61311.78576   7603.60896
#> 10 CtrF01R2_G.D3_01_4760 85768.36117 109461.75445
#> 11 CtrF01R1_G.C9_01_4755 85302.81947 104253.84537
#> 12 BtiF01R5_G.D7_01_4766 61252.42545 115683.73755
#> 13 BtiF01R4_G.D6_01_4764 81873.96379 112164.14229
#> 14 BtiF01R3_G.D2_01_4758 84981.21914      0.00000
#> 15 BtiF01R2_G.D4_01_4761 36629.02462 124806.49101
#> 16 BtiF01R1_G.D8_01_4767     0.00000 109927.26425
#> 17                    rt    13.90181     13.90586

我还将我的数据转换为CSV文件并导入:

Old_data <- as.data.frame(read.csv("data.csv" , sep="," , header=TRUE,stringsAsFactors=FALSE))

#install.packages("readxl")
library("readxl")
Old_data <- read_excel("data.xlsx")

我尝试了Mr sveer建议的解决方案

New_data <- cbind(Name=Old_data[1,],as.data.frame(t(Old_data[-1,])))

它给出如下结果

head(New_data)

当我尝试

View(New_data)
Name.QC_G.F9_01_4768   Name.QC_G.F9_01_4765
70027.02                69578.19   
95774.14                81479.30
75686.39                68455.65
72093.07                70942.65
77502.98                77527.54
68132.06                70296.73
52233.05                56074.64
4559.99                 35831.79
59257.48                59574.73
105136.55               105274.98

它删除行名!

我只是对这个问题感到困惑,我认为问题是因为我将行转换为列,列转换为行

请告诉我任何澄清,也如果我可以发送数据给别人,让他可以尝试非常感谢

得到字符类型而不是数字的原因:

传输数据将导致matrix。一名matrix只能上一门课。字符当有混合类。

解决方案:

我仍然不确定你的数据结构。添加一个可重复的例子总是一个好主意,如果数据很大,你也可以使用pastebin或只是reproduce描述。

我假设当你通过:File>导入数据>

要获得所需的输出(特别是行名),您可以尝试:

setNames(as.data.frame(t(Old_data[,-1])),Old_data[[1]]) -> df

如果要将行名转换为列:

tibble::rownames_to_column(df, "Name")