Bạn có trường hợp đặc biệt tra cứu các giá trị trong đó chỉ mục là số nguyên 1: 4. Điều này có nghĩa là bạn có thể sử dụng lập chỉ mục vectơ để giải quyết vấn đề của mình chỉ trong một bước dễ dàng.
Đầu tiên, tạo một số dữ liệu mẫu:
set.seed(1)
dat <- data.frame(col1 = sample(1:4, 10, replace = TRUE))
Tiếp theo, xác định các giá trị tra cứu và sử dụng [
Subsetting để tìm ra kết quả mong muốn:
values <- c("G", "H", "J", "K")
dat$col2 <- values[dat$col1]
Kết quả:
dat
col1 col2
1 2 H
2 2 H
3 3 J
4 4 K
5 1 G
6 4 K
7 4 K
8 3 J
9 3 J
10 1 G
Tổng quát hơn, bạn có thể sử dụng [
Subsetting kết hợp với match
để giải quyết loại vấn đề:
index <- c(1, 2, 3, 4)
values <- c("G", "H", "J", "K")
dat$col2 <- values[match(dat$col1, index)]
dat
col1 col2
1 2 H
2 2 H
3 3 J
4 4 K
5 1 G
6 4 K
7 4 K
8 3 J
9 3 J
10 1 G
bạn đang sử dụng ngôn ngữ lập trình nào? –
@TheGiG OP đánh dấu câu hỏi bằng [tag: r] – Andrie
Có liên quan cao: [trường hợp câu lệnh tương đương] (http://stackoverflow.com/q/4622060/168747), [Cách thêm cột vào một dữ liệu '. frame'?] (http://stackoverflow.com/q/4562547/168747), [Làm sạch dữ liệu trong trang tính Excel] (http://stackoverflow.com/q/7374314/168747) (trong tập hợp các liên kết khác này). – Marek