我使用Rstudio并从在线导入csv文件。
data <- read.csv("http://databank.worldbank.org/data/download/GDP.csv", stringsAsFactors = FALSE)
在文件中,列X.3的类型为字符。
我想将行(5到202)从字符转换为数字,以便我可以计算它的平均值。
所以,当我在下面使用这一行时。它仍然是角色
data[c(5:202),"X.3"] <- as.numeric(gsub(",","",data[c(5:202),"X.3"]))
当我输入class(data[10,"X.3"])
时,它会将输出显示为character
我可以使用
将整列转换为数字data[,"X.3"] <- as.numeric(gsub(",","",data[,"X.3"]))
但我想只转换特定的行,即从5到202,因为列的其他行变为N/A
。我不知道该怎么做。
答案 0 :(得分:1)
对您的代码进行更改可以帮助您将其设为数字:
data <- read.csv("http://databank.worldbank.org/data/download/GDP.csv", header = T, stringsAsFactors = FALSE, skip = 3)
# skipping first 3 rows which is just empty space/junk and defining the one as header
data <- data[-1,]
#removing the first line after the header
data$US.dollars. <- as.numeric(gsub(',','',data$US.dollars.))
#replacing scientific comma with blank to convert the character to numeric
hist(data$US.dollars.) #sample plot
如评论中所述,您不能将列的一部分保留为字符和部分数字,因为R不允许这样做,并且它强制类型转换为更高的顺序,在这种情况下是数字到字符。您可以在此处阅读有关Implicit Coercion of R
的更多信息