簡體   English   中英

如何將所有字符串數據幀的子集列轉換為數字?

[英]How to transform a subset columns of an all string data frame in to numeric?

我所有的數據都是字符格式。 當我嘗試使用apply將數據的子集轉換為數字時,它似乎不起作用。

df2  <- as.data.frame(matrix(as.character(1:9),3,3))
df2[,-2]  <-  apply(df2[,-2], 2, as.numeric)
apply(df2, 2, class)

有人可以指出以上示例中我做錯了什么嗎? 謝謝

如上所述,R中的matrix只能在所有列中保存相同類型的值。 您不能將某些值更改為數字,而將其他值保留為字符。 如果要使用其他數據類型,則可以使用data.frame ,但即使如此,每列也只能使用一種數據類型。

對於您的示例案例:

df2  <- as.data.frame(matrix(as.character(1:9),3,3))

將在每一列中創建一個factor為的data.frame。 如果要將第二列轉換為numeric ,可以執行以下操作:

df2$V2 <- as.numeric(levels(df2$V2))[df2$V2]

要么

df$V2 <- as.numeric(as.character(df2$V2))

因此,在這種情況下,您無需使用apply

str(df2)
#'data.frame':  3 obs. of  3 variables:
# $ V1: Factor w/ 3 levels "1","2","3": 1 2 3
# $ V2: num  4 5 6
# $ V3: Factor w/ 3 levels "7","8","9": 1 2 3

如果要將所有列都轉換為數字,則可以執行以下操作:

# if the columns were factors before:
df2[] <- lapply(df2, function(i) as.numeric(levels(i))[i])

要么

# if the columns were characters before:
df2[] <- lapply(df2, as.numeric)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM