R은 데이터 프레임 열을 "잘못된"형식으로 이해하거나 열 클래스를 요소에서 문자로 변경해야만 수정할 수 있습니다. 나는 방법 이전에 다음의 열 클래스를 변경되었습니다데이터 프레임 열 유형을 변환하는 함수
set.seed(1)
df <- data.frame(x = 1:10,
y = rep(1:2, 5),
k = rnorm(10, 5,2),
z = rep(c(2010, 2012, 2011, 2010, 1999), 2),
j = c(rep(c("a", "b", "c"), 3), "d"))
x <- c("y", "z")
for(i in 1:length(x)){
df[,x[i]] <- factor(df[,x[i]])}
그리고 다시 숫자에 : 어쩌면이 일을 더 나은 방법이 있다는 것을 나에게 발생
x <- 1:5
for(i in 1:length(x)){
df[,x[i]] <- as.numeric(as.character(df[,x[i]]))} # Character cannot become numeric
.
convert.magic <- function(obj,types){
out <- lapply(1:length(obj),FUN = function(i){FUN1 <-
switch(types[i],
character = as.character,
numeric = as.numeric,
factor = as.factor); FUN1(obj[,i])})
names(out) <- colnames(obj)
as.data.frame(out)
}
그러나,이 기능 벡터 유형은 각 열에 대해 지정해야합니다 위해 : 나는 내가 필요로하는 거의 정확하게 무엇 인 this question을 발견
convert.magic(df, rep("factor",5))
convert.magic(df, c("character", "factor"))
# Error in FUN(1:5[[1L]], ...) : could not find function "FUN1"
누군가가 나를 도울 때문에이 기능을 다시 할 수
열 이름과 숫자로 작동하는지 확인하십시오. ? "약 원래 숫자에 f를 요인을 변환하려면 : 당신은 단지 factor``에서 숫자로 요소를 변환하는 경우 나는
x <- c("y", "z")
convert.magic(df, "character", x)
...이 나를 위해 너무 고급이 될 것이라고 두려워 as.numeric (레벨 (f)) [f]가 as.numeric (as.character (f))보다 약간 더 효율적이고 권장됩니다. " 이는 또한'convert.magic'이 특정 상황에서 예기치 않은 결과를 가져올 수도 있음을 나타냅니다. – BenBarnes
@BenBarnes 흠 ... 나는 그걸 몰랐다. 아주 좋은 코멘트, 감사합니다! – Mikko