data.frame 열 형식을 문자에서 요인으로 변환
내 data.frame 개체의 일부 열 형식(클래스)을 변경하고 싶습니다.mydf
) 문자에서 요인으로 이동합니다.
텍스트 파일을 읽을 때는 이 작업을 수행하고 싶지 않습니다.read.table()
기능.
어떤 도움이라도 주시면 감사하겠습니다.
안녕하세요 R의 세계에 오신 것을 환영합니다.
mtcars #look at this built in data set
str(mtcars) #allows you to see the classes of the variables (all numeric)
#one approach it to index with the $ sign and the as.factor function
mtcars$am <- as.factor(mtcars$am)
#another approach
mtcars[, 'cyl'] <- as.factor(mtcars[, 'cyl'])
str(mtcars) # now look at the classes
문자, 날짜, 정수 및 기타 클래스에도 적용됩니다.
당신이 R에 익숙하지 않기 때문에, 저는 당신이 다음 두 웹사이트를 보는 것을 제안합니다.
참조 매뉴얼: http://cran.r-project.org/manuals.html
R 참조 카드: http://cran.r-project.org/doc/contrib/Short-refcard.pdf
# To do it for all names
df[] <- lapply( df, factor) # the "[]" keeps the dataframe structure
# to do it for some names in a vector named 'col_names'
col_names <- names(df)
df[col_names] <- lapply(df[col_names] , factor)
설명.모든 데이터 프레임이 목록이고 다음의 결과입니다.[
여러 개의 가치 있는 인수와 함께 사용되는 것은 마찬가지로 목록입니다, 그래서 목록 위에 루프하는 것은lapply
위의 할당은 함수가 다음과 같은 목록 집합을 생성합니다.data.frame.[<-
데이터 프레임에 성공적으로 다시 삽입해야 합니다.df
또 다른 전략은 고유 항목 수가 특정 기준보다 적은 열만 변환하는 것입니다. 예를 들어 행 수 로그보다 적다고 가정해 보겠습니다.
cols.to.factor <- sapply( df, function(col) length(unique(col)) < log10(length(col)) )
df[ cols.to.factor] <- lapply(df[ cols.to.factor] , factor)
사용할 수 있습니다.dplyr::mutate_if()
모든 문자 열을 변환하거나dplyr::mutate_at()
요인에 대한 명명된 문자 열 선택:
library(dplyr)
# all character columns to factor:
df <- mutate_if(df, is.character, as.factor)
# select character columns 'char1', 'char2', etc. to factor:
df <- mutate_at(df, vars(char1, char2), as.factor)
데이터를 이미 로드한 후 data.frame의 모든 문자 변수를 요인으로 변경하려면 다음과 같이 하면 됩니다.dat
:
character_vars <- lapply(dat, class) == "character"
dat[, character_vars] <- lapply(dat[, character_vars], as.factor)
클래스에 속하는 열을 식별하는 벡터가 생성됩니다.character
적용됩니다.as.factor
그 열까지.
표본 데이터:
dat <- data.frame(var1 = c("a", "b"),
var2 = c("hi", "low"),
var3 = c(0, 0.1),
stringsAsFactors = FALSE
)
당신이 사용할 수 있는 또 다른 짧은 방법은 파이프입니다.%<>%
magrittr 패키지에서).문자 열 my 열을 요인으로 변환합니다.
library(magrittr)
mydf$mycolumn %<>% factor
저는 그것을 기능적으로 하고 있습니다.이 경우 문자 변수만 요인으로 변환합니다.
for (i in 1:ncol(data)){
if(is.character(data[,i])){
data[,i]=factor(data[,i])
}
}
열을 자동으로 식별할 필요가 없는 한, 가장 간단한 해결책은 다음과 같습니다.
df$name <- as.factor(df$name)
열을 만듭니다.name
데이터 프레임으로df
요인
사용할 수 있습니다.across
새것으로dplyr
1.0.0
library(dplyr)
df <- mtcars
#To turn 1 column to factor
df <- df %>% mutate(cyl = factor(cyl))
#Turn columns to factor based on their type.
df <- df %>% mutate(across(where(is.character), factor))
#Based on the position
df <- df %>% mutate(across(c(2, 4), factor))
#Change specific columns by their name
df <- df %>% mutate(across(c(cyl, am), factor))
언급URL : https://stackoverflow.com/questions/9251326/convert-data-frame-column-format-from-character-to-factor
'programing' 카테고리의 다른 글
Firestore에서 보안 및 인덱스 규칙을 내보내는 방법은 무엇입니까? (0) | 2023.06.18 |
---|---|
Visual Studio에서 새 데이터 항목을 추가할 때 EF 6.x DbContext Generator 옵션의 용도 (0) | 2023.06.18 |
데이터가 다른/같은 세션에서 커밋되었으므로 행을 업데이트할 수 없습니다(Oracle SQL Developer). (0) | 2023.06.18 |
Cypress의 tsconfig.json 위치를 지정합니다. (0) | 2023.06.18 |
$ 및 문자 값을 사용하여 동적으로 데이터 프레임 열 선택 (0) | 2023.06.18 |