簡體   English   中英

R中的因素和虛擬變量

[英]Factors and Dummy Variables in R

我是數據分析和學習R的新手。我有一些非常基本的問題,我不太清楚。 我希望在這里能找到幫助。 請忍受我..還在學習-

我寫了一個小函數對具有9個變量的數據集執行基本的探索性分析,其中8個是Int / Numeric類型,而1個是Factor。 函數是這樣的:

  out <- function(x) 
  {
    c <- class(x)
    na.len <- length(which(is.na(x)))
    m <- mean(x, na.rm = TRUE)
    s <- sd(x, na.rm = TRUE)
    uc <- m+3*s
    lc <- m-3*s
    return(c(classofvar = c, noofNA = na.len, mean=m, stdev=s, UpperCap = uc, LowerCap = lc))
  }

然后我將其應用於數據集:

stats <- apply(train, 2, FUN = out)

但是輸出文件將所有類別的變量作為Character,並將所有Means作為NA。 頭部受傷后,我發現問題出在因素變量上。 我使用此將其轉換為數字:

train$MonthlyIncome=as.numeric(as.character(train$MonthlyIncome))

工作正常。 但是我很困惑,如果不查看數據集,我會使用上面的函數-它不會起作用。 我該如何處理這種情況。

我什么時候應該考慮創建虛擬變量?

預先謝謝您,希望問題不會太愚蠢!

請注意, c()產生一個向量,向量中的所有元素必須屬於同一類。 如果元素具有不同的類,則c()使用能夠保存所有信息的最簡單的類。 例如,數值和整數將產生數值。 字符和整數將導致字符。

如果需要其他類,請使用列表或data.frame。

out <- function(x) 
  {
    c <- class(x)
    na.len <- length(which(is.na(x)))
    m <- mean(x, na.rm = TRUE)
    s <- sd(x, na.rm = TRUE)
    uc <- m+3*s
    lc <- m-3*s
    return(data.frame(classofvar = c, noofNA = na.len, mean=m, stdev=s, UpperCap = uc, LowerCap = lc))
  }

sum(is.na(x))length(which(is.na(x)))

使用lapply在每個變量上運行該函數。 使用do.call附加結果數據幀。

stats <- do.call(
  rbind,
  lapply(train, out)
)

暫無
暫無

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

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