將數據框中的多列從字符轉換爲數字格式的最有效方法是什麼?將多列從字符轉換爲數字格式r
我有一個名爲DF與所有字符變量的數據框。
我想這樣做
for (i in names(DF){
DF$i <- as.numeric(DF$i)
}
謝謝
將數據框中的多列從字符轉換爲數字格式的最有效方法是什麼?將多列從字符轉換爲數字格式r
我有一個名爲DF與所有字符變量的數據框。
我想這樣做
for (i in names(DF){
DF$i <- as.numeric(DF$i)
}
謝謝
你可以嘗試
DF <- data.frame("a" = as.character(0:5),
"b" = paste(0:5, ".1", sep = ""),
"c" = letters[1:6],
stringsAsFactors = FALSE)
# Check columns classes
sapply(DF, class)
# a b c
# "character" "character" "character"
cols.num <- c("a","b")
DF[cols.num] <- sapply(DF[cols.num],as.numeric)
sapply(DF, class)
# a b c
# "numeric" "numeric" "character"
[.data.table'(data,nums)中的錯誤: 當我是data.table(或字符向量)時,必須使用'on ='參數指定要連接的列(請參閱?data。表)或鍵入x(即排序,並標記爲排序,請參閱?setkey)。由於x在RAM中排序,鍵控連接可能對超大型數據具有進一步的優勢。 – zsad512
https://stackoverflow.com/questions/48448293/converting-different-columns-to-different-formats?noredirect=1#comment83933268_48448293 – zsad512
我想我想通了。這是我做了(也許不是最完美的解決方案 - 如何小鬼建議[羅夫這是非常歡迎)
#names of columns in data frame
cols <- names(DF)
# character variables
cols.char <- c("fx_code","date")
#numeric variables
cols.num <- cols[!cols %in% cols.char]
DF.char <- DF[cols.char]
DF.num <- as.data.frame(lapply(DF[cols.num],as.numeric))
DF2 <- cbind(DF.char, DF.num)
我意識到這是一個古老的線程,但想要發佈一個類似於你對一個函數的請求的解決方案(剛纔碰到類似的問題,我試圖將整個表格格式化爲百分比標籤)。
假設你有一個df,包含5個你想轉換的字符列。首先,我創建一個包含我要處理的列的名稱表:
col_to_convert <- data.frame(nrow = 1:5
,col = c("col1","col2","col3","col4","col5"))
for (i in 1:max(cal_to_convert$row))
{
colname <- col_to_convert$col[i]
colnum <- which(colnames(df) == colname)
for (j in 1:nrow(df))
{
df[j,colnum] <- as.numericdf(df[j,colnum])
}
}
,因爲它通過細胞進入細胞這是不理想的大表,但它會完成這項工作。
可以使用的列的索引: data_set[,1:9] <- sapply(dataset[,1:9],as.character)
如果您已經使用了tidyverse,這種替換所有數字字符列,並獨自離開休息:
library(dplyr)
library(magrittr)
# solution
dataset %<>% mutate_if(is.character,as.numeric)
# to test
str(data.frame(x1 = c('1','2','3'),x2 = c('4','5','6'),stringsAsFactors = F))
str(data.frame(x1 = c('1','2','3'),x2 = c('4','5','6'),stringsAsFactors = F) %>% mutate_if(is.character,as.numeric))
爲什麼他們都字符格式在第一位?我懷疑在過程的早期可以做些什麼來使它們從一開始就是數字。 – Aaron