[英]How to subset a data frame by removing all rows from columns with a given string, and value less than X?
[英]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.