2012-12-05 4 views
0

불편을 끼쳐 드려 죄송합니다.문자를 숫자로 바꾸기

F1008Y
406_407insD
R1207은 *

내가 "1"로 모든 제품을 대체하고자하는
F1008Y : 나는 같은 항목을 포함하는 data.frame 있습니다. 어떻게 수행 할 수 있습니까?

+0

안녕하세요. 나는 "F1008Y"가 1이 되길 원한다. – Bfu38

답변

3

당신은 ifelse

DF <- read.table(text="F1008Y 
F1008Y 
406_407insD 
R1207* 
0 
0", header=FALSE) # adding some 0 

DF # this is your data.frame 
      V1 
1  F1008Y 
2  F1008Y 
3 406_407insD 
4  R1207* 
5   0 
6   0 

ifelse({df <- DF; df!=0}, df[,] <- 1, df[,] <- 0) # replacing 
    V1 
[1,] 1 
[2,] 1 
[3,] 1 
[4,] 1 
[5,] 0 
[6,] 0 

# the original data.frame remains the same 
DF 
      V1 
1  F1008Y 
2  F1008Y 
3 406_407insD 
4  R1207* 
5   0 
6   0 
+0

안녕하세요 Jiber, 정말 고마워. Data.frame에도 "0"항목이 포함되어 있다는 점을 잊어 버렸습니다. 그래서 코드를 실행할 때 "0"도 교체됩니다. 대신 그들은 0이어야합니다. – Bfu38

+0

@ Bfu38 내 편집보기 –

+0

ok, 정말 고마워요 !! – Bfu38

1

가 여기에 함께 혼합 숫자와 문자열이있는 벡터에 as.numeric를 사용하는 경우, 문자열이 NA로 변환되는 사실을 활용 예제가 사용할 수 있습니다. 그냥 재미로 추가 열을 추가했습니다.

DF <- read.table(text="F1008Y 
F1008Y 
406_407insD 
R1207* 
0 
0", header=FALSE) 
DF$V2 <- DF$V1 
DF.bak <- DF ## Backups are always nice 
DF 
#   V1   V2 
# 1  F1008Y  F1008Y 
# 2  F1008Y  F1008Y 
# 3 406_407insD 406_407insD 
# 4  R1207*  R1207* 
# 5   0   0 
# 6   0   0 
## By default, the columns have been read in as factors. Convert to character 
DF[sapply(DF, is.factor)] = lapply(DF[sapply(DF, is.factor)], as.character) 
DF[is.na(sapply(DF, as.numeric))] <- 1 
# Warning messages: 
# 1: In lapply(X = X, FUN = FUN, ...) : NAs introduced by coercion 
# 2: In lapply(X = X, FUN = FUN, ...) : NAs introduced by coercion 
DF 
# V1 V2 
# 1 1 1 
# 2 1 1 
# 3 1 1 
# 4 1 1 
# 5 0 0 
# 6 0 0 
관련 문제