【发布时间】:2021-12-10 05:20:05
【问题描述】:
我知道这个问题可能会重复,但我尝试了所有解决方案:
How to convert entire dataframe to numeric while preserving decimals?
https://statisticsglobe.com/convert-data-frame-column-to-numeric-in-r
但是没用
我从我的电脑手动导入了 excel 数据:
文件>导入数据>excel,我将数据类型设置为数字
我检查了我的数据使用
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
但在数据之后,我使用 R 将行转换为列,将列转换为行:
New_data <- as.data.frame(t(Old_data))
当我使用以下方法检查我的新数据时:
View(New_data)
我发现我的列是字符类型而不是数字
我尝试将 New_data 转换为数字
New_data_B -> as.numeric(New_data)
我检查了我的数据使用
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")
我尝试了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
它会删除行名!
我只是对这个问题感到困惑,我认为问题是因为我将行转换为列,将列转换为行
请告诉我任何澄清以及我是否可以将数据发送给某人以便他可以尝试 非常感谢
【问题讨论】:
-
当你使用
read.csv时,你不必使用as.data.frame。您使用的是哪个版本的 R?Name列的元素是字符串。您可能只想转换Name旁边的两列,例如library(dplyr); New_data_B <- New_data_B %>% mutate(MT95T843 = as.numeric(MT95T843), MT95T756 = as.numeric(MT95T756)) -
感谢您的评论,是的,我尝试了这个解决方案,但没有成功,我使用了 mutate_all 函数,因为我有 1091 列,而不仅仅是两列
-
New_data_B[is.na(New_data_B),] <- 0; New_data_B <- bind_cols(New_data_B %>% select(Name), New_data_B %>% select(-Name) %>% mutate_all(as.numeric)
标签: r dataframe statistics