2017-03-16 4 views
0

현재 하나의 열에 1-20의 값이 들어있는 데이터 프레임이 r에 있습니다. 값 0-4 -> A, 5-9 -> B, 10-14 -> C .... 등을 대체해야합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?데이터 프레임의 열 값을 문자열로 바꿉니다.

이 같은 데이터 프레임의 첫 번째 부분은 현재 모습입니다 : 내가 반지의 값을 대체하기 위해 노력하고있어

 sex length diameter height wholeWeight shuckedWeight visceraWeight shellWeight rings 
1  2 0.455 0.365 0.095  0.5140  0.2245  0.1010  0.1500 15 
2  2 0.350 0.265 0.090  0.2255  0.0995  0.0485  0.0700  7 
3  1 0.530 0.420 0.135  0.6770  0.2565  0.1415  0.2100  9 
4  2 0.440 0.365 0.125  0.5160  0.2155  0.1140  0.1550 10 
5  0 0.330 0.255 0.080  0.2050  0.0895  0.0395  0.0550  7 
6  0 0.425 0.300 0.095  0.3515  0.1410  0.0775  0.1200  8 
7  1 0.530 0.415 0.150  0.7775  0.2370  0.1415  0.3300 20 
8  1 0.545 0.425 0.125  0.7680  0.2940  0.1495  0.2600 16 
9  2 0.475 0.370 0.125  0.5095  0.2165  0.1125  0.1650  9 
10  1 0.550 0.440 0.150  0.8945  0.3145  0.1510  0.3200 19 
11  1 0.525 0.380 0.140  0.6065  0.1940  0.1475  0.2100 14 
12  2 0.430 0.350 0.110  0.4060  0.1675  0.0810  0.1350 10 

.

+0

또는 사용 plyr''에서'mapvalues' :'날엔 $ 반지 <- mapvalues ​​(DAT $ 반지, 1 : 20, 담당자 (편지 [1 : 4], each = 5))' – count

답변

1

아마 변환 테이블이 될 벡터를 만들 수 있습니다.

tran_table <- rep(c("A","B","C","D"), rep(5,4)) 
names(tran_table) <- 1:20 
test_df <- data.frame(
    ring = sample(1:20, 20) 
) 
test_df$ring <- tran_table[test_df$ring] 

그리고 그 결과는 다음과 같습니다

> test_df 
    ring 
1  A 
2  D 
3  B 
4  A 
5  A 
6  C 
7  B 
8  D 
9  B 
10 A 
11 B 
12 D 
13 C 
14 A 
15 C 
16 C 
17 B 
18 D 
19 C 
20 D 
관련 문제