我知道这个问题可能会重复,但我尝试了所有的解决方案:
如何将整个数据帧转换为数字,同时保留小数?
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")